startup_SWM320.s 16 KB

123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960616263646566676869707172737475767778798081828384858687888990919293949596979899100101102103104105106107108109110111112113114115116117118119120121122123124125126127128129130131132133134135136137138139140141142143144145146147148149150151152153154155156157158159160161162163164165166167168169170171172173174175176177178179180181182183184185186187188189190191192193194195196197198199200201202203204205206207208209210211212213214215216217218219220221222223224225226227228229230231232233234235236237238239240241242243244245246247248249250251252253254255256257258259260261262263264265266267268269270271272273274275276277278279280281282283284285286287288289290291292293294295296297298299300301302303304305306307308309310311312313314315316317318319320321322323324325326327328329330331332333334335336337338339340341342343344345346347348349350351352353354355356357358359360361362363364365366367368369370371372373374375376377378379380381382383384385386387388389390391392393394395396397398399400401402403404405406407408409410411412413414415416417418419420421422423424425426427428429430431432433434435436437438439440441442443444445446447448449450451452453454455456457458459460461462463464465466467468469470471472473474475476477478479480481482483484485486487488489490491492493494495496497498499500501502503504505506507508509510511512513514515516517518519520521522523524525526527528529530531532533534535536537538539540541542543544545546547548549550551552553554555556557558
  1. ;******************************************************************************************************************************************
  2. ; 文件名称: startup_SWM320.s
  3. ; 功能说明: SWM2400单片机的启动文件
  4. ; 技术支持: http://www.synwit.com.cn/e/tool/gbook/?bid=1
  5. ; 注意事项:
  6. ; 版本日期: V1.1.0 2017年10月25日
  7. ; 升级记录:
  8. ;
  9. ;
  10. ;******************************************************************************************************************************************
  11. ; @attention
  12. ;
  13. ; THE PRESENT FIRMWARE WHICH IS FOR GUIDANCE ONLY AIMS AT PROVIDING CUSTOMERS WITH CODING INFORMATION
  14. ; REGARDING THEIR PRODUCTS IN ORDER FOR THEM TO SAVE TIME. AS A RESULT, SYNWIT SHALL NOT BE HELD LIABLE
  15. ; FOR ANY DIRECT, INDIRECT OR CONSEQUENTIAL DAMAGES WITH RESPECT TO ANY CLAIMS ARISING FROM THE CONTENT
  16. ; OF SUCH FIRMWARE AND/OR THE USE MADE BY CUSTOMERS OF THE CODING INFORMATION CONTAINED HEREIN IN CONN-
  17. ; -ECTION WITH THEIR PRODUCTS.
  18. ;
  19. ; COPYRIGHT 2012 Synwit Technology
  20. ;******************************************************************************************************************************************
  21. ; Amount of memory (in bytes) allocated for Stack
  22. ; Tailor this value to your application needs
  23. ; <h> Stack Configuration
  24. ; <o> Stack Size (in Bytes) <0x0-0xFFFFFFFF:8>
  25. ; </h>
  26. Stack_Size EQU 0x00001000
  27. AREA STACK, NOINIT, READWRITE, ALIGN=3
  28. Stack_Mem SPACE Stack_Size
  29. __initial_sp
  30. ; <h> Heap Configuration
  31. ; <o> Heap Size (in Bytes) <0x0-0xFFFFFFFF:8>
  32. ; </h>
  33. Heap_Size EQU 0x00000000
  34. AREA HEAP, NOINIT, READWRITE, ALIGN=3
  35. __heap_base
  36. Heap_Mem SPACE Heap_Size
  37. __heap_limit
  38. PRESERVE8
  39. THUMB
  40. ; Vector Table Mapped to Address 0 at Reset
  41. AREA RESET, DATA, READONLY
  42. EXPORT __Vectors
  43. EXPORT __Vectors_End
  44. EXPORT __Vectors_Size
  45. __Vectors DCD __initial_sp ; Top of Stack
  46. DCD Reset_Handler ; Reset Handler
  47. DCD NMI_Handler ; NMI Handler
  48. DCD HardFault_Handler ; Hard Fault Handler
  49. DCD MemManage_Handler ; MPU Fault Handler
  50. DCD BusFault_Handler ; Bus Fault Handler
  51. DCD UsageFault_Handler ; Usage Fault Handler
  52. DCD 0 ; Reserved
  53. DCD 0 ; Reserved
  54. DCD 0 ; Reserved
  55. DCD 0 ; Reserved
  56. DCD SVC_Handler ; SVCall Handler
  57. DCD DebugMon_Handler ; Debug Monitor Handler
  58. DCD 0 ; Reserved
  59. DCD PendSV_Handler ; PendSV Handler
  60. DCD SysTick_Handler ; SysTick Handler
  61. ; External Interrupts
  62. DCD GPIOA0_Handler
  63. DCD GPIOA1_Handler
  64. DCD GPIOA2_Handler
  65. DCD GPIOA3_Handler
  66. DCD GPIOA4_Handler
  67. DCD GPIOA5_Handler
  68. DCD GPIOA6_Handler
  69. DCD GPIOA7_Handler
  70. DCD GPIOB0_Handler
  71. DCD GPIOB1_Handler
  72. DCD GPIOB2_Handler
  73. DCD GPIOB3_Handler
  74. DCD GPIOB4_Handler
  75. DCD GPIOB5_Handler
  76. DCD GPIOB6_Handler
  77. DCD GPIOB7_Handler
  78. DCD GPIOC0_Handler
  79. DCD GPIOC1_Handler
  80. DCD GPIOC2_Handler
  81. DCD GPIOC3_Handler
  82. DCD GPIOC4_Handler
  83. DCD GPIOC5_Handler
  84. DCD GPIOC6_Handler
  85. DCD GPIOC7_Handler
  86. DCD GPIOM0_Handler
  87. DCD GPIOM1_Handler
  88. DCD GPIOM2_Handler
  89. DCD GPIOM3_Handler
  90. DCD GPIOM4_Handler
  91. DCD GPIOM5_Handler
  92. DCD GPIOM6_Handler
  93. DCD GPIOM7_Handler
  94. DCD DMA_Handler
  95. DCD LCD_Handler
  96. DCD NORFLC_Handler
  97. DCD CAN_Handler
  98. DCD PULSE_Handler
  99. DCD WDT_Handler
  100. DCD PWM_Handler
  101. DCD UART0_Handler
  102. DCD UART1_Handler
  103. DCD UART2_Handler
  104. DCD UART3_Handler
  105. DCD 0
  106. DCD I2C0_Handler
  107. DCD I2C1_Handler
  108. DCD SPI0_Handler
  109. DCD ADC0_Handler
  110. DCD RTC_Handler
  111. DCD BOD_Handler
  112. DCD SDIO_Handler
  113. DCD GPIOA_Handler
  114. DCD GPIOB_Handler
  115. DCD GPIOC_Handler
  116. DCD GPIOM_Handler
  117. DCD GPION_Handler
  118. DCD GPIOP_Handler
  119. DCD ADC1_Handler
  120. DCD FPU_Handler
  121. DCD SPI1_Handler
  122. DCD TIMR0_Handler
  123. DCD TIMR1_Handler
  124. DCD TIMR2_Handler
  125. DCD TIMR3_Handler
  126. DCD TIMR4_Handler
  127. DCD TIMR5_Handler
  128. __Vectors_End
  129. __Vectors_Size EQU __Vectors_End - __Vectors
  130. AREA |.text|, CODE, READONLY
  131. Reset_Handler PROC
  132. EXPORT Reset_Handler [WEAK]
  133. IMPORT __main
  134. LDR R0, =__main
  135. BX R0
  136. ENDP
  137. ; Dummy Exception Handlers (infinite loops which can be modified)
  138. NMI_Handler PROC
  139. EXPORT NMI_Handler [WEAK]
  140. B .
  141. ENDP
  142. HardFault_Handler PROC
  143. EXPORT HardFault_Handler [WEAK]
  144. B .
  145. ENDP
  146. MemManage_Handler PROC
  147. EXPORT MemManage_Handler [WEAK]
  148. B .
  149. ENDP
  150. BusFault_Handler PROC
  151. EXPORT BusFault_Handler [WEAK]
  152. B .
  153. ENDP
  154. UsageFault_Handler PROC
  155. EXPORT UsageFault_Handler [WEAK]
  156. B .
  157. ENDP
  158. SVC_Handler PROC
  159. EXPORT SVC_Handler [WEAK]
  160. B .
  161. ENDP
  162. DebugMon_Handler PROC
  163. EXPORT DebugMon_Handler [WEAK]
  164. B .
  165. ENDP
  166. PendSV_Handler PROC
  167. EXPORT PendSV_Handler [WEAK]
  168. B .
  169. ENDP
  170. SysTick_Handler PROC
  171. EXPORT SysTick_Handler [WEAK]
  172. B .
  173. ENDP
  174. GPIOA0_Handler PROC
  175. EXPORT GPIOA0_Handler [WEAK]
  176. B .
  177. ENDP
  178. GPIOA1_Handler PROC
  179. EXPORT GPIOA1_Handler [WEAK]
  180. B .
  181. ENDP
  182. GPIOA2_Handler PROC
  183. EXPORT GPIOA2_Handler [WEAK]
  184. B .
  185. ENDP
  186. GPIOA3_Handler PROC
  187. EXPORT GPIOA3_Handler [WEAK]
  188. B .
  189. ENDP
  190. GPIOA4_Handler PROC
  191. EXPORT GPIOA4_Handler [WEAK]
  192. B .
  193. ENDP
  194. GPIOA5_Handler PROC
  195. EXPORT GPIOA5_Handler [WEAK]
  196. B .
  197. ENDP
  198. GPIOA6_Handler PROC
  199. EXPORT GPIOA6_Handler [WEAK]
  200. B .
  201. ENDP
  202. GPIOA7_Handler PROC
  203. EXPORT GPIOA7_Handler [WEAK]
  204. B .
  205. ENDP
  206. GPIOB0_Handler PROC
  207. EXPORT GPIOB0_Handler [WEAK]
  208. B .
  209. ENDP
  210. GPIOB1_Handler PROC
  211. EXPORT GPIOB1_Handler [WEAK]
  212. B .
  213. ENDP
  214. GPIOB2_Handler PROC
  215. EXPORT GPIOB2_Handler [WEAK]
  216. B .
  217. ENDP
  218. GPIOB3_Handler PROC
  219. EXPORT GPIOB3_Handler [WEAK]
  220. B .
  221. ENDP
  222. GPIOB4_Handler PROC
  223. EXPORT GPIOB4_Handler [WEAK]
  224. B .
  225. ENDP
  226. GPIOB5_Handler PROC
  227. EXPORT GPIOB5_Handler [WEAK]
  228. B .
  229. ENDP
  230. GPIOB6_Handler PROC
  231. EXPORT GPIOB6_Handler [WEAK]
  232. B .
  233. ENDP
  234. GPIOB7_Handler PROC
  235. EXPORT GPIOB7_Handler [WEAK]
  236. B .
  237. ENDP
  238. GPIOC0_Handler PROC
  239. EXPORT GPIOC0_Handler [WEAK]
  240. B .
  241. ENDP
  242. GPIOC1_Handler PROC
  243. EXPORT GPIOC1_Handler [WEAK]
  244. B .
  245. ENDP
  246. GPIOC2_Handler PROC
  247. EXPORT GPIOC2_Handler [WEAK]
  248. B .
  249. ENDP
  250. GPIOC3_Handler PROC
  251. EXPORT GPIOC3_Handler [WEAK]
  252. B .
  253. ENDP
  254. GPIOC4_Handler PROC
  255. EXPORT GPIOC4_Handler [WEAK]
  256. B .
  257. ENDP
  258. GPIOC5_Handler PROC
  259. EXPORT GPIOC5_Handler [WEAK]
  260. B .
  261. ENDP
  262. GPIOC6_Handler PROC
  263. EXPORT GPIOC6_Handler [WEAK]
  264. B .
  265. ENDP
  266. GPIOC7_Handler PROC
  267. EXPORT GPIOC7_Handler [WEAK]
  268. B .
  269. ENDP
  270. GPIOM0_Handler PROC
  271. EXPORT GPIOM0_Handler [WEAK]
  272. B .
  273. ENDP
  274. GPIOM1_Handler PROC
  275. EXPORT GPIOM1_Handler [WEAK]
  276. B .
  277. ENDP
  278. GPIOM2_Handler PROC
  279. EXPORT GPIOM2_Handler [WEAK]
  280. B .
  281. ENDP
  282. GPIOM3_Handler PROC
  283. EXPORT GPIOM3_Handler [WEAK]
  284. B .
  285. ENDP
  286. GPIOM4_Handler PROC
  287. EXPORT GPIOM4_Handler [WEAK]
  288. B .
  289. ENDP
  290. GPIOM5_Handler PROC
  291. EXPORT GPIOM5_Handler [WEAK]
  292. B .
  293. ENDP
  294. GPIOM6_Handler PROC
  295. EXPORT GPIOM6_Handler [WEAK]
  296. B .
  297. ENDP
  298. GPIOM7_Handler PROC
  299. EXPORT GPIOM7_Handler [WEAK]
  300. B .
  301. ENDP
  302. DMA_Handler PROC
  303. EXPORT DMA_Handler [WEAK]
  304. B .
  305. ENDP
  306. LCD_Handler PROC
  307. EXPORT LCD_Handler [WEAK]
  308. B .
  309. ENDP
  310. NORFLC_Handler PROC
  311. EXPORT NORFLC_Handler [WEAK]
  312. B .
  313. ENDP
  314. CAN_Handler PROC
  315. EXPORT CAN_Handler [WEAK]
  316. B .
  317. ENDP
  318. PULSE_Handler PROC
  319. EXPORT PULSE_Handler [WEAK]
  320. B .
  321. ENDP
  322. WDT_Handler PROC
  323. EXPORT WDT_Handler [WEAK]
  324. B .
  325. ENDP
  326. PWM_Handler PROC
  327. EXPORT PWM_Handler [WEAK]
  328. B .
  329. ENDP
  330. UART0_Handler PROC
  331. EXPORT UART0_Handler [WEAK]
  332. B .
  333. ENDP
  334. UART1_Handler PROC
  335. EXPORT UART1_Handler [WEAK]
  336. B .
  337. ENDP
  338. UART2_Handler PROC
  339. EXPORT UART2_Handler [WEAK]
  340. B .
  341. ENDP
  342. UART3_Handler PROC
  343. EXPORT UART3_Handler [WEAK]
  344. B .
  345. ENDP
  346. I2C0_Handler PROC
  347. EXPORT I2C0_Handler [WEAK]
  348. B .
  349. ENDP
  350. I2C1_Handler PROC
  351. EXPORT I2C1_Handler [WEAK]
  352. B .
  353. ENDP
  354. SPI0_Handler PROC
  355. EXPORT SPI0_Handler [WEAK]
  356. B .
  357. ENDP
  358. ADC0_Handler PROC
  359. EXPORT ADC0_Handler [WEAK]
  360. B .
  361. ENDP
  362. RTC_Handler PROC
  363. EXPORT RTC_Handler [WEAK]
  364. B .
  365. ENDP
  366. BOD_Handler PROC
  367. EXPORT BOD_Handler [WEAK]
  368. B .
  369. ENDP
  370. SDIO_Handler PROC
  371. EXPORT SDIO_Handler [WEAK]
  372. B .
  373. ENDP
  374. GPIOA_Handler PROC
  375. EXPORT GPIOA_Handler [WEAK]
  376. B .
  377. ENDP
  378. GPIOB_Handler PROC
  379. EXPORT GPIOB_Handler [WEAK]
  380. B .
  381. ENDP
  382. GPIOC_Handler PROC
  383. EXPORT GPIOC_Handler [WEAK]
  384. B .
  385. ENDP
  386. GPIOM_Handler PROC
  387. EXPORT GPIOM_Handler [WEAK]
  388. B .
  389. ENDP
  390. GPION_Handler PROC
  391. EXPORT GPION_Handler [WEAK]
  392. B .
  393. ENDP
  394. GPIOP_Handler PROC
  395. EXPORT GPIOP_Handler [WEAK]
  396. B .
  397. ENDP
  398. ADC1_Handler PROC
  399. EXPORT ADC1_Handler [WEAK]
  400. B .
  401. ENDP
  402. FPU_Handler PROC
  403. EXPORT FPU_Handler [WEAK]
  404. B .
  405. ENDP
  406. SPI1_Handler PROC
  407. EXPORT SPI1_Handler [WEAK]
  408. B .
  409. ENDP
  410. TIMR0_Handler PROC
  411. EXPORT TIMR0_Handler [WEAK]
  412. B .
  413. ENDP
  414. TIMR1_Handler PROC
  415. EXPORT TIMR1_Handler [WEAK]
  416. B .
  417. ENDP
  418. TIMR2_Handler PROC
  419. EXPORT TIMR2_Handler [WEAK]
  420. B .
  421. ENDP
  422. TIMR3_Handler PROC
  423. EXPORT TIMR3_Handler [WEAK]
  424. B .
  425. ENDP
  426. TIMR4_Handler PROC
  427. EXPORT TIMR4_Handler [WEAK]
  428. B .
  429. ENDP
  430. TIMR5_Handler PROC
  431. EXPORT TIMR5_Handler [WEAK]
  432. B .
  433. ENDP
  434. ALIGN
  435. ;*******************************************************************************
  436. ; User Stack and Heap initialization
  437. ;*******************************************************************************
  438. IF :DEF:__MICROLIB
  439. EXPORT __initial_sp
  440. EXPORT __heap_base
  441. EXPORT __heap_limit
  442. ELSE
  443. IMPORT __use_two_region_memory
  444. EXPORT __user_initial_stackheap
  445. __user_initial_stackheap
  446. LDR R0, = Heap_Mem
  447. LDR R1, =(Stack_Mem + Stack_Size)
  448. LDR R2, = (Heap_Mem + Heap_Size)
  449. LDR R3, = Stack_Mem
  450. BX LR
  451. ALIGN
  452. ENDIF
  453. END