A bundled STM32F10x Std Periph and CMSIS library
You can not select more than 25 topics Topics must start with a letter or number, can include dashes ('-') and can be up to 35 characters long.
 
 
 
 
 

265 lines
14 KiB

  1. /**************************************************************************//**
  2. * @file ARMCM4.h
  3. * @brief CMSIS Core Peripheral Access Layer Header File for
  4. * ARMCM4 Device Series
  5. * @version V1.07
  6. * @date 30. January 2012
  7. *
  8. * @note
  9. * Copyright (C) 2012 ARM Limited. All rights reserved.
  10. *
  11. * @par
  12. * ARM Limited (ARM) is supplying this software for use with Cortex-M
  13. * processor based microcontrollers. This file can be freely distributed
  14. * within development tools that are supporting such ARM based processors.
  15. *
  16. * @par
  17. * THIS SOFTWARE IS PROVIDED "AS IS". NO WARRANTIES, WHETHER EXPRESS, IMPLIED
  18. * OR STATUTORY, INCLUDING, BUT NOT LIMITED TO, IMPLIED WARRANTIES OF
  19. * MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE APPLY TO THIS SOFTWARE.
  20. * ARM SHALL NOT, IN ANY CIRCUMSTANCES, BE LIABLE FOR SPECIAL, INCIDENTAL, OR
  21. * CONSEQUENTIAL DAMAGES, FOR ANY REASON WHATSOEVER.
  22. *
  23. ******************************************************************************/
  24. #ifndef ARMCM4_H
  25. #define ARMCM4_H
  26. #ifdef __cplusplus
  27. extern "C" {
  28. #endif
  29. /* ------------------------- Interrupt Number Definition ------------------------ */
  30. typedef enum IRQn
  31. {
  32. /* ------------------- Cortex-M4 Processor Exceptions Numbers ------------------- */
  33. NonMaskableInt_IRQn = -14, /*!< 2 Non Maskable Interrupt */
  34. HardFault_IRQn = -13, /*!< 3 HardFault Interrupt */
  35. MemoryManagement_IRQn = -12, /*!< 4 Memory Management Interrupt */
  36. BusFault_IRQn = -11, /*!< 5 Bus Fault Interrupt */
  37. UsageFault_IRQn = -10, /*!< 6 Usage Fault Interrupt */
  38. SVCall_IRQn = -5, /*!< 11 SV Call Interrupt */
  39. DebugMonitor_IRQn = -4, /*!< 12 Debug Monitor Interrupt */
  40. PendSV_IRQn = -2, /*!< 14 Pend SV Interrupt */
  41. SysTick_IRQn = -1, /*!< 15 System Tick Interrupt */
  42. /* ---------------------- ARMCM4 Specific Interrupt Numbers --------------------- */
  43. WDT_IRQn = 0, /*!< Watchdog Timer Interrupt */
  44. RTC_IRQn = 1, /*!< Real Time Clock Interrupt */
  45. TIM0_IRQn = 2, /*!< Timer0 / Timer1 Interrupt */
  46. TIM2_IRQn = 3, /*!< Timer2 / Timer3 Interrupt */
  47. MCIA_IRQn = 4, /*!< MCIa Interrupt */
  48. MCIB_IRQn = 5, /*!< MCIb Interrupt */
  49. UART0_IRQn = 6, /*!< UART0 Interrupt */
  50. UART1_IRQn = 7, /*!< UART1 Interrupt */
  51. UART2_IRQn = 8, /*!< UART2 Interrupt */
  52. UART4_IRQn = 9, /*!< UART4 Interrupt */
  53. AACI_IRQn = 10, /*!< AACI / AC97 Interrupt */
  54. CLCD_IRQn = 11, /*!< CLCD Combined Interrupt */
  55. ENET_IRQn = 12, /*!< Ethernet Interrupt */
  56. USBDC_IRQn = 13, /*!< USB Device Interrupt */
  57. USBHC_IRQn = 14, /*!< USB Host Controller Interrupt */
  58. CHLCD_IRQn = 15, /*!< Character LCD Interrupt */
  59. FLEXRAY_IRQn = 16, /*!< Flexray Interrupt */
  60. CAN_IRQn = 17, /*!< CAN Interrupt */
  61. LIN_IRQn = 18, /*!< LIN Interrupt */
  62. I2C_IRQn = 19, /*!< I2C ADC/DAC Interrupt */
  63. CPU_CLCD_IRQn = 28, /*!< CPU CLCD Combined Interrupt */
  64. UART3_IRQn = 30, /*!< UART3 Interrupt */
  65. SPI_IRQn = 31, /*!< SPI Touchscreen Interrupt */
  66. } IRQn_Type;
  67. /* ================================================================================ */
  68. /* ================ Processor and Core Peripheral Section ================ */
  69. /* ================================================================================ */
  70. /* -------- Configuration of the Cortex-M4 Processor and Core Peripherals ------- */
  71. #define __CM4_REV 0x0001 /*!< Core revision r0p1 */
  72. #define __MPU_PRESENT 1 /*!< MPU present or not */
  73. #define __NVIC_PRIO_BITS 3 /*!< Number of Bits used for Priority Levels */
  74. #define __Vendor_SysTickConfig 0 /*!< Set to 1 if different SysTick Config is used */
  75. #define __FPU_PRESENT 1 /*!< FPU present or not */
  76. #include <core_cm4.h> /* Processor and core peripherals */
  77. #include "system_ARMCM4.h" /* System Header */
  78. /* ================================================================================ */
  79. /* ================ Device Specific Peripheral Section ================ */
  80. /* ================================================================================ */
  81. /* ------------------- Start of section using anonymous unions ------------------ */
  82. #if defined(__CC_ARM)
  83. #pragma push
  84. #pragma anon_unions
  85. #elif defined(__ICCARM__)
  86. #pragma language=extended
  87. #elif defined(__GNUC__)
  88. /* anonymous unions are enabled by default */
  89. #elif defined(__TMS470__)
  90. /* anonymous unions are enabled by default */
  91. #elif defined(__TASKING__)
  92. #pragma warning 586
  93. #else
  94. #warning Not supported compiler type
  95. #endif
  96. /* ================================================================================ */
  97. /* ================ CPU FPGA System (CPU_SYS) ================ */
  98. /* ================================================================================ */
  99. typedef struct
  100. {
  101. __I uint32_t ID; /* Offset: 0x000 (R/ ) Board and FPGA Identifier */
  102. __IO uint32_t MEMCFG; /* Offset: 0x004 (R/W) Remap and Alias Memory Control */
  103. __I uint32_t SW; /* Offset: 0x008 (R/ ) Switch States */
  104. __IO uint32_t LED; /* Offset: 0x00C (R/W) LED Output States */
  105. __I uint32_t TS; /* Offset: 0x010 (R/ ) Touchscreen Register */
  106. __IO uint32_t CTRL1; /* Offset: 0x014 (R/W) Misc Control Functions */
  107. uint32_t RESERVED0[2];
  108. __IO uint32_t CLKCFG; /* Offset: 0x020 (R/W) System Clock Configuration */
  109. __IO uint32_t WSCFG; /* Offset: 0x024 (R/W) Flash Waitstate Configuration */
  110. __IO uint32_t CPUCFG; /* Offset: 0x028 (R/W) Processor Configuration */
  111. uint32_t RESERVED1[3];
  112. __IO uint32_t BASE; /* Offset: 0x038 (R/W) ROM Table base Address */
  113. __IO uint32_t ID2; /* Offset: 0x03C (R/W) Secondary Identification Register */
  114. } ARM_CPU_SYS_TypeDef;
  115. /* ================================================================================ */
  116. /* ================ DUT FPGA System (DUT_SYS) ================ */
  117. /* ================================================================================ */
  118. typedef struct
  119. {
  120. __I uint32_t ID; /* Offset: 0x000 (R/ ) Board and FPGA Identifier */
  121. __IO uint32_t PERCFG; /* Offset: 0x004 (R/W) Peripheral Control Signals */
  122. __I uint32_t SW; /* Offset: 0x008 (R/ ) Switch States */
  123. __IO uint32_t LED; /* Offset: 0x00C (R/W) LED Output States */
  124. __IO uint32_t SEG7; /* Offset: 0x010 (R/W) 7-segment LED Output States */
  125. __I uint32_t CNT25MHz; /* Offset: 0x014 (R/ ) Freerunning counter incrementing at 25MHz */
  126. __I uint32_t CNT100Hz; /* Offset: 0x018 (R/ ) Freerunning counter incrementing at 100Hz */
  127. } ARM_DUT_SYS_TypeDef;
  128. /* ================================================================================ */
  129. /* ================ Timer (TIM) ================ */
  130. /* ================================================================================ */
  131. typedef struct
  132. {
  133. __IO uint32_t Timer1Load; /* Offset: 0x000 (R/W) Timer 1 Load */
  134. __I uint32_t Timer1Value; /* Offset: 0x004 (R/ ) Timer 1 Counter Current Value */
  135. __IO uint32_t Timer1Control; /* Offset: 0x008 (R/W) Timer 1 Control */
  136. __O uint32_t Timer1IntClr; /* Offset: 0x00C ( /W) Timer 1 Interrupt Clear */
  137. __I uint32_t Timer1RIS; /* Offset: 0x010 (R/ ) Timer 1 Raw Interrupt Status */
  138. __I uint32_t Timer1MIS; /* Offset: 0x014 (R/ ) Timer 1 Masked Interrupt Status */
  139. __IO uint32_t Timer1BGLoad; /* Offset: 0x018 (R/W) Background Load Register */
  140. uint32_t RESERVED0[1];
  141. __IO uint32_t Timer2Load; /* Offset: 0x020 (R/W) Timer 2 Load */
  142. __I uint32_t Timer2Value; /* Offset: 0x024 (R/ ) Timer 2 Counter Current Value */
  143. __IO uint32_t Timer2Control; /* Offset: 0x028 (R/W) Timer 2 Control */
  144. __O uint32_t Timer2IntClr; /* Offset: 0x02C ( /W) Timer 2 Interrupt Clear */
  145. __I uint32_t Timer2RIS; /* Offset: 0x030 (R/ ) Timer 2 Raw Interrupt Status */
  146. __I uint32_t Timer2MIS; /* Offset: 0x034 (R/ ) Timer 2 Masked Interrupt Status */
  147. __IO uint32_t Timer2BGLoad; /* Offset: 0x038 (R/W) Background Load Register */
  148. } ARM_TIM_TypeDef;
  149. /* ================================================================================ */
  150. /* ============== Universal Asyncronous Receiver / Transmitter (UART) ============= */
  151. /* ================================================================================ */
  152. typedef struct
  153. {
  154. __IO uint32_t DR; /* Offset: 0x000 (R/W) Data */
  155. union {
  156. __I uint32_t RSR; /* Offset: 0x000 (R/ ) Receive Status */
  157. __O uint32_t ECR; /* Offset: 0x000 ( /W) Error Clear */
  158. };
  159. uint32_t RESERVED0[4];
  160. __IO uint32_t FR; /* Offset: 0x018 (R/W) Flags */
  161. uint32_t RESERVED1[1];
  162. __IO uint32_t ILPR; /* Offset: 0x020 (R/W) IrDA Low-power Counter */
  163. __IO uint32_t IBRD; /* Offset: 0x024 (R/W) Interger Baud Rate */
  164. __IO uint32_t FBRD; /* Offset: 0x028 (R/W) Fractional Baud Rate */
  165. __IO uint32_t LCR_H; /* Offset: 0x02C (R/W) Line Control */
  166. __IO uint32_t CR; /* Offset: 0x030 (R/W) Control */
  167. __IO uint32_t IFLS; /* Offset: 0x034 (R/W) Interrupt FIFO Level Select */
  168. __IO uint32_t IMSC; /* Offset: 0x038 (R/W) Interrupt Mask Set / Clear */
  169. __IO uint32_t RIS; /* Offset: 0x03C (R/W) Raw Interrupt Status */
  170. __IO uint32_t MIS; /* Offset: 0x040 (R/W) Masked Interrupt Status */
  171. __O uint32_t ICR; /* Offset: 0x044 ( /W) Interrupt Clear */
  172. __IO uint32_t DMACR; /* Offset: 0x048 (R/W) DMA Control */
  173. } ARM_UART_TypeDef;
  174. /* -------------------- End of section using anonymous unions ------------------- */
  175. #if defined(__CC_ARM)
  176. #pragma pop
  177. #elif defined(__ICCARM__)
  178. /* leave anonymous unions enabled */
  179. #elif defined(__GNUC__)
  180. /* anonymous unions are enabled by default */
  181. #elif defined(__TMS470__)
  182. /* anonymous unions are enabled by default */
  183. #elif defined(__TASKING__)
  184. #pragma warning restore
  185. #else
  186. #warning Not supported compiler type
  187. #endif
  188. /* ================================================================================ */
  189. /* ================ Peripheral memory map ================ */
  190. /* ================================================================================ */
  191. /* -------------------------- CPU FPGA memory map ------------------------------- */
  192. #define ARM_FLASH_BASE (0x00000000UL)
  193. #define ARM_RAM_BASE (0x20000000UL)
  194. #define ARM_RAM_FPGA_BASE (0x1EFF0000UL)
  195. #define ARM_CPU_CFG_BASE (0xDFFF0000UL)
  196. #define ARM_CPU_SYS_BASE (ARM_CPU_CFG_BASE + 0x00000)
  197. #define ARM_UART3_BASE (ARM_CPU_CFG_BASE + 0x05000)
  198. /* -------------------------- DUT FPGA memory map ------------------------------- */
  199. #define ARM_APB_BASE (0x40000000UL)
  200. #define ARM_AHB_BASE (0x4FF00000UL)
  201. #define ARM_DMC_BASE (0x60000000UL)
  202. #define ARM_SMC_BASE (0xA0000000UL)
  203. #define ARM_TIM0_BASE (ARM_APB_BASE + 0x02000)
  204. #define ARM_TIM2_BASE (ARM_APB_BASE + 0x03000)
  205. #define ARM_DUT_SYS_BASE (ARM_APB_BASE + 0x04000)
  206. #define ARM_UART0_BASE (ARM_APB_BASE + 0x06000)
  207. #define ARM_UART1_BASE (ARM_APB_BASE + 0x07000)
  208. #define ARM_UART2_BASE (ARM_APB_BASE + 0x08000)
  209. #define ARM_UART4_BASE (ARM_APB_BASE + 0x09000)
  210. /* ================================================================================ */
  211. /* ================ Peripheral declaration ================ */
  212. /* ================================================================================ */
  213. /* -------------------------- CPU FPGA Peripherals ------------------------------ */
  214. #define ARM_CPU_SYS ((ARM_CPU_SYS_TypeDef *) ARM_CPU_SYS_BASE)
  215. #define ARM_UART3 (( ARM_UART_TypeDef *) ARM_UART3_BASE)
  216. /* -------------------------- DUT FPGA Peripherals ------------------------------ */
  217. #define ARM_DUT_SYS ((ARM_DUT_SYS_TypeDef *) ARM_DUT_SYS_BASE)
  218. #define ARM_TIM0 (( ARM_TIM_TypeDef *) ARM_TIM0_BASE)
  219. #define ARM_TIM2 (( ARM_TIM_TypeDef *) ARM_TIM2_BASE)
  220. #define ARM_UART0 (( ARM_UART_TypeDef *) ARM_UART0_BASE)
  221. #define ARM_UART1 (( ARM_UART_TypeDef *) ARM_UART1_BASE)
  222. #define ARM_UART2 (( ARM_UART_TypeDef *) ARM_UART2_BASE)
  223. #define ARM_UART4 (( ARM_UART_TypeDef *) ARM_UART4_BASE)
  224. #ifdef __cplusplus
  225. }
  226. #endif
  227. #endif /* ARMCM4_H */