Startup_ACM32F0x0.s 9.1 KB

123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960616263646566676869707172737475767778798081828384858687888990919293949596979899100101102103104105106107108109110111112113114115116117118119120121122123124125126127128129130131132133134135136137138139140141142143144145146147148149150151152153154155156157158159160161162163164165166167168169170171172173174175176177178179180181182183184185186187188189190191192193194195196197198199200201202203204205206207208209210211212213214215
  1. ;* File Name : Startup_ACM32F0x0.s
  2. ;* Version : V1.0.0
  3. ;* Date : 2020
  4. ;* Description : ACM32F0x0 Devices vector table for MDK-ARM toolchain.
  5. ;* This module performs:
  6. ;* - Set the initial SP
  7. ;* - Set the initial PC == Reset_Handler
  8. ;* - Set the vector table entries with the exceptions ISR address
  9. ;* - Configure the clock system
  10. ;* - Branches to __main in the C library (which eventually
  11. ;* calls main()).
  12. ;* After Reset the SC000 processor is in Thread mode,
  13. ;* priority is Privileged, and the Stack is set to Main.
  14. ;*******************************************************************************
  15. Stack_Size EQU 0x00000800
  16. Heap_Size EQU 0x00000000
  17. AREA STACK, NOINIT, READWRITE, ALIGN=3
  18. Stack_Mem SPACE Stack_Size
  19. __initial_sp
  20. AREA HEAP, NOINIT, READWRITE, ALIGN=3
  21. __heap_base
  22. Heap_Mem SPACE Heap_Size
  23. __heap_limit
  24. PRESERVE8
  25. THUMB
  26. ; Vector Table Mapped to Address 0 at Reset
  27. AREA RESET, DATA, READONLY
  28. EXPORT __Vectors
  29. __Vectors
  30. DCD __initial_sp ; Top of Stack
  31. DCD Reset_Handler ; Reset Handler
  32. DCD NMI_Handler ; NMI Handler
  33. DCD HardFault_Handler ; Hard Fault Handler
  34. DCD MemManage_Handler ; MPU Fault Handler
  35. DCD 0 ; Reserved
  36. DCD 0 ; Reserved
  37. DCD 0 ; Reserved
  38. DCD 0 ; Reserved
  39. DCD 0 ; Reserved
  40. DCD 0 ; Reserved
  41. DCD SVC_Handler ; SVCall Handler
  42. DCD 0 ; Reserved
  43. DCD 0 ; Reserved
  44. DCD PendSV_Handler ; PendSV Handler
  45. DCD SysTick_Handler ; SysTick Handler
  46. ; External Interrupts
  47. DCD WDT_IRQHandler ; 0: WDT_IRQHandler
  48. DCD RTC_IRQHandler ; 1: RTC_IRQHandler
  49. DCD EFC_IRQHandler ; 2: EFC_IRQHandler
  50. DCD GPIOAB_IRQHandler ; 3: GPIOAB_IRQHandler
  51. DCD GPIOCD_IRQHandler ; 4: GPIOCD_IRQHandler
  52. DCD EXTI_IRQHandler ; 5: EXTI_IRQHandler
  53. DCD SRAM_PARITY_IRQHandler ; 6: SRAM_PARITY_IRQHandler
  54. DCD CLKRDY_IRQHandler ; 7: CLKRDY_IRQHandler
  55. DCD LCD_IRQHandler ; 8: LCD_IRQHandler
  56. DCD DMA_IRQHandler ; 9: DMA_IRQHandler
  57. DCD UART3_IRQHandler ; 10: UART3_IRQHandler
  58. DCD TKEY_IRQHandler ; 11: TKEY_IRQHandler
  59. DCD ADC_IRQHandler ; 12: ADC_IRQHandler
  60. DCD TIM1_BRK_UP_TRG_COM_IRQHandler ; 13: TIM1_BRK_UP_TRG_COM_IRQHandler
  61. DCD TIM1_CC_IRQHandler ; 14: TIM1_CC_IRQHandler
  62. DCD RSV_IRQHandler ; 15: Reserved
  63. DCD TIM3_IRQHandler ; 16: TIM3_IRQHandler
  64. DCD TIM6_IRQHandler ; 17: TIM6_IRQHandler
  65. DCD RSV_IRQHandler ; 18: Reserved
  66. DCD TIM14_IRQHandler ; 19: TIM14_IRQHandler
  67. DCD TIM15_IRQHandler ; 20: TIM15_IRQHandler
  68. DCD TIM16_IRQHandler ; 21: TIM16_IRQHandler
  69. DCD TIM17_IRQHandler ; 22: TIM17_IRQHandler
  70. DCD I2C1_IRQHandler ; 23: I2C1_IRQHandler
  71. DCD I2C2_IRQHandler ; 24: I2C2_IRQHandler
  72. DCD SPI1_IRQHandler ; 25: SPI1_IRQHandler
  73. DCD SPI2_IRQHandler ; 26: SPI2_IRQHandler
  74. DCD UART1_IRQHandler ; 27: UART1_IRQHandler
  75. DCD UART2_IRQHandler ; 28: UART2_IRQHandler
  76. DCD LPUART_IRQHandler ; 29: LPUART_IRQHandler
  77. DCD CAN1_IRQHandler ; 30: CAN1_IRQHandler
  78. DCD AES_IRQHandler ; 31: AES_IRQHandler
  79. AREA |.text|, CODE, READONLY
  80. Reset_Handler PROC
  81. EXPORT Reset_Handler [WEAK]
  82. IMPORT __main
  83. LDR R0, =__main
  84. BX R0
  85. ENDP
  86. NMI_Handler PROC
  87. EXPORT NMI_Handler [WEAK]
  88. B .
  89. ENDP
  90. HardFault_Handler PROC
  91. EXPORT HardFault_Handler [WEAK]
  92. B .
  93. ENDP
  94. MemManage_Handler PROC
  95. EXPORT MemManage_Handler [WEAK]
  96. B .
  97. ENDP
  98. SVC_Handler PROC
  99. EXPORT SVC_Handler [WEAK]
  100. B .
  101. ENDP
  102. PendSV_Handler PROC
  103. EXPORT PendSV_Handler [WEAK]
  104. B .
  105. ENDP
  106. SysTick_Handler PROC
  107. EXPORT SysTick_Handler [WEAK]
  108. B .
  109. ENDP
  110. Default_Handler PROC
  111. EXPORT WDT_IRQHandler [WEAK]
  112. EXPORT RTC_IRQHandler [WEAK]
  113. EXPORT EFC_IRQHandler [WEAK]
  114. EXPORT GPIOAB_IRQHandler [WEAK]
  115. EXPORT GPIOCD_IRQHandler [WEAK]
  116. EXPORT EXTI_IRQHandler [WEAK]
  117. EXPORT SRAM_PARITY_IRQHandler [WEAK]
  118. EXPORT CLKRDY_IRQHandler [WEAK]
  119. EXPORT LCD_IRQHandler [WEAK]
  120. EXPORT DMA_IRQHandler [WEAK]
  121. EXPORT UART3_IRQHandler [WEAK]
  122. EXPORT TKEY_IRQHandler [WEAK]
  123. EXPORT ADC_IRQHandler [WEAK]
  124. EXPORT TIM1_BRK_UP_TRG_COM_IRQHandler [WEAK]
  125. EXPORT TIM1_CC_IRQHandler [WEAK]
  126. EXPORT TIM3_IRQHandler [WEAK]
  127. EXPORT TIM6_IRQHandler [WEAK]
  128. EXPORT TIM14_IRQHandler [WEAK]
  129. EXPORT TIM15_IRQHandler [WEAK]
  130. EXPORT TIM16_IRQHandler [WEAK]
  131. EXPORT TIM17_IRQHandler [WEAK]
  132. EXPORT I2C1_IRQHandler [WEAK]
  133. EXPORT I2C2_IRQHandler [WEAK]
  134. EXPORT SPI1_IRQHandler [WEAK]
  135. EXPORT SPI2_IRQHandler [WEAK]
  136. EXPORT UART1_IRQHandler [WEAK]
  137. EXPORT UART2_IRQHandler [WEAK]
  138. EXPORT LPUART_IRQHandler [WEAK]
  139. EXPORT CAN1_IRQHandler [WEAK]
  140. EXPORT AES_IRQHandler [WEAK]
  141. EXPORT RSV_IRQHandler [WEAK]
  142. WDT_IRQHandler
  143. RTC_IRQHandler
  144. EFC_IRQHandler
  145. GPIOAB_IRQHandler
  146. GPIOCD_IRQHandler
  147. EXTI_IRQHandler
  148. SRAM_PARITY_IRQHandler
  149. CLKRDY_IRQHandler
  150. LCD_IRQHandler
  151. DMA_IRQHandler
  152. UART3_IRQHandler
  153. TKEY_IRQHandler
  154. ADC_IRQHandler
  155. TIM1_BRK_UP_TRG_COM_IRQHandler
  156. TIM1_CC_IRQHandler
  157. TIM3_IRQHandler
  158. TIM6_IRQHandler
  159. TIM14_IRQHandler
  160. TIM15_IRQHandler
  161. TIM16_IRQHandler
  162. TIM17_IRQHandler
  163. I2C1_IRQHandler
  164. I2C2_IRQHandler
  165. SPI1_IRQHandler
  166. SPI2_IRQHandler
  167. UART1_IRQHandler
  168. UART2_IRQHandler
  169. LPUART_IRQHandler
  170. CAN1_IRQHandler
  171. AES_IRQHandler
  172. RSV_IRQHandler
  173. B .
  174. ENDP
  175. ALIGN
  176. ; User Initial Stack & Heap
  177. IF :DEF:__MICROLIB
  178. EXPORT __initial_sp
  179. EXPORT __heap_base
  180. EXPORT __heap_limit
  181. ELSE
  182. IMPORT __use_two_region_memory
  183. EXPORT __user_initial_stackheap
  184. __user_initial_stackheap
  185. LDR R0, = Heap_Mem
  186. LDR R1, =(Stack_Mem + Stack_Size)
  187. LDR R2, = (Heap_Mem + Heap_Size)
  188. LDR R3, = Stack_Mem
  189. BX LR
  190. ALIGN
  191. ENDIF
  192. END