lm4f120.pp 15 KB

123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960616263646566676869707172737475767778798081828384858687888990919293949596979899100101102103104105106107108109110111112113114115116117118119120121122123124125126127128129130131132133134135136137138139140141142143144145146147148149150151152153154155156157158159160161162163164165166167168169170171172173174175176177178179180181182183184185186187188189190191192193194195196197198199200201202203204205206207208209210211212213214215216217218219220221222223224225226227228229230231232233234235236237238239240241242243244245246247248249250251252253254255256257258259260261262263264265266267268269270271272273274275276277278279280281282283284285286287288289290291292293294295296297298299300301302303304305306307308309310311312313314315316317318319320321322323324325326327328329330331332333334335336337338339340341342343344345346347348349350351352353354355356357358359360361362363364365366367368369370371372373374375376377378379380381382383384385386387388389390391392393394395396397398399400401402403404405406407408409410411412413414415416417418419420421422423424425426427428429430431432433434435436437438439440441442443444445
  1. {$goto on}
  2. {$IFNDEF FPC_DOTTEDUNITS}
  3. unit lm4f120;
  4. {$ENDIF FPC_DOTTEDUNITS}
  5. interface
  6. const
  7. Flash_Base = $00000000;
  8. ROM_Base = $01000000;
  9. SRAM_Base = $20000000;
  10. Bitband_Base = $22000000;
  11. // FiRM Peripherals
  12. Watchdog0_Base = $40000000;
  13. Watchdog1_Base = $40001000;
  14. GPIOA_Base = $40004000;
  15. GPIOB_Base = $40005000;
  16. GPIOC_Base = $40006000;
  17. GPIOD_Base = $40007000;
  18. SSI0_Base = $40008000;
  19. SSI1_Base = $40009000;
  20. SSI2_Base = $4000A000;
  21. SSI3_Base = $4000B000;
  22. UART0_Base = $4000C000;
  23. UART1_Base = $4000D000;
  24. UART2_Base = $4000E000;
  25. UART3_Base = $4000F000;
  26. UART4_Base = $40010000;
  27. UART5_Base = $40011000;
  28. UART6_Base = $40012000;
  29. UART7_Base = $40013000;
  30. // Peripherals
  31. I2C0_Base = $40020000;
  32. I2C1_Base = $40021000;
  33. I2C2_Base = $40022000;
  34. I2C3_Base = $40023000;
  35. GPIOE_Base = $40024000;
  36. GPIOF_Base = $40025000;
  37. Timer0_1632_Base = $40030000;
  38. Timer1_1632_Base = $40031000;
  39. Timer2_1632_Base = $40032000;
  40. Timer3_1632_Base = $40033000;
  41. Timer4_1632_Base = $40034000;
  42. Timer5_1632_Base = $40035000;
  43. Timer0_3264_Base = $40036000;
  44. Timer1_3264_Base = $40037000;
  45. ADC0_Base = $40038000;
  46. ADC1_Base = $40039000;
  47. AnalogComp_Base = $4003C000;
  48. CAN0_Base = $40040000;
  49. Timer2_3264_Base = $4004C000;
  50. Timer3_3264_Base = $4004D000;
  51. Timer4_3264_Base = $4004E000;
  52. Timer5_3264_Base = $4004F000;
  53. USB_Base = $40050000;
  54. GPIOA_AHB_Base = $40058000;
  55. GPIOB_AHB_Base = $40059000;
  56. GPIOC_AHB_Base = $4005A000;
  57. GPIOD_AHB_Base = $4005B000;
  58. GPIOE_AHB_Base = $4005C000;
  59. GPIOF_AHB_Base = $4005D000;
  60. EEPROMKeyLocker_Base = $400AF000;
  61. SystemException_Base = $400F9000;
  62. Hibernation_Base = $400FC000;
  63. FlashControl_Base = $400FD000;
  64. SystemControl_Base = $400FE000;
  65. uDMA_Base = $400FF000;
  66. PeriphBitband_Base = $42000000;
  67. // Private Peripheral Bus
  68. ITM_Base = $E0000000;
  69. DWT_Base = $E0001000;
  70. FPB_Base = $E0002000;
  71. CortexM4F_Base = $E000E000;
  72. TPIU_Base = $E0040000;
  73. ETM_Base = $E0041000;
  74. implementation
  75. procedure NMI_interrupt; external name 'NMI_interrupt';
  76. procedure Hardfault_interrupt; external name 'Hardfault_interrupt';
  77. procedure MemManage_interrupt; external name 'MemManage_interrupt';
  78. procedure BusFault_interrupt; external name 'BusFault_interrupt';
  79. procedure UsageFault_interrupt; external name 'UsageFault_interrupt';
  80. procedure SWI_interrupt; external name 'SWI_interrupt';
  81. procedure DebugMonitor_interrupt; external name 'DebugMonitor_interrupt';
  82. procedure PendingSV_interrupt; external name 'PendingSV_interrupt';
  83. procedure SysTick_interrupt; external name 'SysTick_interrupt';
  84. procedure GPIO_Port_A_interrupt; external name 'GPIO_Port_A_interrupt';
  85. procedure GPIO_Port_B_interrupt; external name 'GPIO_Port_B_interrupt';
  86. procedure GPIO_Port_C_interrupt; external name 'GPIO_Port_C_interrupt';
  87. procedure GPIO_Port_D_interrupt; external name 'GPIO_Port_D_interrupt';
  88. procedure GPIO_Port_E_interrupt; external name 'GPIO_Port_E_interrupt';
  89. procedure UART0_interrupt; external name 'UART0_interrupt';
  90. procedure UART1_interrupt; external name 'UART1_interrupt';
  91. procedure SSI0_interrupt; external name 'SSI0_interrupt';
  92. procedure I2C0_interrupt; external name 'I2C0_interrupt';
  93. procedure ADC0_Seq_0_interrupt; external name 'ADC0_Seq_0_interrupt';
  94. procedure ADC0_Seq_1_interrupt; external name 'ADC0_Seq_1_interrupt';
  95. procedure ADC0_Seq_2_interrupt; external name 'ADC0_Seq_2_interrupt';
  96. procedure ADC0_Seq_3_interrupt; external name 'ADC0_Seq_3_interrupt';
  97. procedure Watchdog_0_and_1_interrupt; external name 'Watchdog_0_and_1_interrupt';
  98. procedure Timer_1632_0A_interrupt; external name 'Timer_1632_0A_interrupt';
  99. procedure Timer_1632_0B_interrupt; external name 'Timer_1632_0B_interrupt';
  100. procedure Timer_1632_1A_interrupt; external name 'Timer_1632_1A_interrupt';
  101. procedure Timer_1632_1B_interrupt; external name 'Timer_1632_1B_interrupt';
  102. procedure Timer_1632_2A_interrupt; external name 'Timer_1632_2A_interrupt';
  103. procedure Timer_1632_2B_interrupt; external name 'Timer_1632_2B_interrupt';
  104. procedure Analog_Comp_0_interrupt; external name 'Analog_Comp_0_interrupt';
  105. procedure Analog_Comp_1_interrupt; external name 'Analog_Comp_1_interrupt';
  106. procedure System_Control_interrupt; external name 'System_Control_interrupt';
  107. procedure Flash_and_EEPROM_interrupt; external name 'Flash_and_EEPROM_interrupt';
  108. procedure GPIO_Port_F_interrupt; external name 'GPIO_Port_F_interrupt';
  109. procedure UART2_interrupt; external name 'UART2_interrupt';
  110. procedure SSI1_interrupt; external name 'SSI1_interrupt';
  111. procedure Timer_1632_3A_interrupt; external name 'Timer_1632_3A_interrupt';
  112. procedure Timer_1632_3B_interrupt; external name 'Timer_1632_3B_interrupt';
  113. procedure I2C1_interrupt; external name 'I2C1_interrupt';
  114. procedure CAN0_interrupt; external name 'CAN0_interrupt';
  115. procedure Hibernation_interrupt; external name 'Hibernation_interrupt';
  116. procedure USB_interrupt; external name 'USB_interrupt';
  117. procedure uDMA_Software_interrupt; external name 'uDMA_Software_interrupt';
  118. procedure uDMA_Error_interrupt; external name 'uDMA_Error_interrupt';
  119. procedure ADC1_Seq_0_interrupt; external name 'ADC1_Seq_0_interrupt';
  120. procedure ADC1_Seq_1_interrupt; external name 'ADC1_Seq_1_interrupt';
  121. procedure ADC1_Seq_2_interrupt; external name 'ADC1_Seq_2_interrupt';
  122. procedure ADC1_Seq_3_interrupt; external name 'ADC1_Seq_3_interrupt';
  123. procedure SSI2_interrupt; external name 'SSI2_interrupt';
  124. procedure SSI3_interrupt; external name 'SSI3_interrupt';
  125. procedure UART3_interrupt; external name 'UART3_interrupt';
  126. procedure UART4_interrupt; external name 'UART4_interrupt';
  127. procedure UART5_interrupt; external name 'UART5_interrupt';
  128. procedure UART6_interrupt; external name 'UART6_interrupt';
  129. procedure UART7_interrupt; external name 'UART7_interrupt';
  130. procedure I2C2_interrupt; external name 'I2C2_interrupt';
  131. procedure I2C3_interrupt; external name 'I2C3_interrupt';
  132. procedure Timer_1632_4A_interrupt; external name 'Timer_1632_4A_interrupt';
  133. procedure Timer_1632_4B_interrupt; external name 'Timer_1632_4B_interrupt';
  134. procedure Timer_1632_5A_interrupt; external name 'Timer_1632_5A_interrupt';
  135. procedure Timer_1632_5B_interrupt; external name 'Timer_1632_5B_interrupt';
  136. procedure Timer_3264_0A_interrupt; external name 'Timer_3264_0A_interrupt';
  137. procedure Timer_3264_0B_interrupt; external name 'Timer_3264_0B_interrupt';
  138. procedure Timer_3264_1A_interrupt; external name 'Timer_3264_1A_interrupt';
  139. procedure Timer_3264_1B_interrupt; external name 'Timer_3264_1B_interrupt';
  140. procedure Timer_3264_2A_interrupt; external name 'Timer_3264_2A_interrupt';
  141. procedure Timer_3264_2B_interrupt; external name 'Timer_3264_2B_interrupt';
  142. procedure Timer_3264_3A_interrupt; external name 'Timer_3264_3A_interrupt';
  143. procedure Timer_3264_3B_interrupt; external name 'Timer_3264_3B_interrupt';
  144. procedure Timer_3264_4A_interrupt; external name 'Timer_3264_4A_interrupt';
  145. procedure Timer_3264_4B_interrupt; external name 'Timer_3264_4B_interrupt';
  146. procedure Timer_3264_5A_interrupt; external name 'Timer_3264_5A_interrupt';
  147. procedure Timer_3264_5B_interrupt; external name 'Timer_3264_5B_interrupt';
  148. procedure System_Exception_imprecise_interrupt; external name 'System_Exception_imprecise_interrupt';
  149. {$i cortexm4f_start.inc}
  150. procedure Vectors; assembler; nostackframe;
  151. label interrupt_vectors;
  152. asm
  153. .section ".init.interrupt_vectors"
  154. interrupt_vectors:
  155. .long _stack_top
  156. .long Startup
  157. .long NMI_interrupt
  158. .long Hardfault_interrupt
  159. .long MemManage_interrupt
  160. .long BusFault_interrupt
  161. .long UsageFault_interrupt
  162. .long 0
  163. .long 0
  164. .long 0
  165. .long 0
  166. .long SWI_interrupt
  167. .long DebugMonitor_interrupt
  168. .long 0
  169. .long PendingSV_interrupt
  170. .long SysTick_interrupt
  171. .long GPIO_Port_A_interrupt
  172. .long GPIO_Port_B_interrupt
  173. .long GPIO_Port_C_interrupt
  174. .long GPIO_Port_D_interrupt
  175. .long GPIO_Port_E_interrupt
  176. .long UART0_interrupt
  177. .long UART1_interrupt
  178. .long SSI0_interrupt
  179. .long I2C0_interrupt
  180. .long 0
  181. .long 0
  182. .long 0
  183. .long 0
  184. .long 0
  185. .long ADC0_Seq_0_interrupt
  186. .long ADC0_Seq_1_interrupt
  187. .long ADC0_Seq_2_interrupt
  188. .long ADC0_Seq_3_interrupt
  189. .long Watchdog_0_and_1_interrupt
  190. .long Timer_1632_0A_interrupt
  191. .long Timer_1632_0B_interrupt
  192. .long Timer_1632_1A_interrupt
  193. .long Timer_1632_1B_interrupt
  194. .long Timer_1632_2A_interrupt
  195. .long Timer_1632_2B_interrupt
  196. .long Analog_Comp_0_interrupt
  197. .long 0
  198. .long Analog_Comp_1_interrupt
  199. .long System_Control_interrupt
  200. .long Flash_and_EEPROM_interrupt
  201. .long GPIO_Port_F_interrupt
  202. .long 0
  203. .long 0
  204. .long UART2_interrupt
  205. .long SSI1_interrupt
  206. .long Timer_1632_3A_interrupt
  207. .long Timer_1632_3B_interrupt
  208. .long I2C1_interrupt
  209. .long 0
  210. .long CAN0_interrupt
  211. .long 0
  212. .long 0
  213. .long 0
  214. .long Hibernation_interrupt
  215. .long USB_interrupt
  216. .long 0
  217. .long uDMA_Software_interrupt
  218. .long uDMA_Error_interrupt
  219. .long ADC1_Seq_0_interrupt
  220. .long ADC1_Seq_1_interrupt
  221. .long ADC1_Seq_2_interrupt
  222. .long ADC1_Seq_3_interrupt
  223. .long 0
  224. .long 0
  225. .long 0
  226. .long 0
  227. .long 0
  228. .long SSI2_interrupt
  229. .long SSI3_interrupt
  230. .long UART3_interrupt
  231. .long UART4_interrupt
  232. .long UART5_interrupt
  233. .long UART6_interrupt
  234. .long UART7_interrupt
  235. .long 0
  236. .long 0
  237. .long 0
  238. .long 0
  239. .long I2C2_interrupt
  240. .long I2C3_interrupt
  241. .long Timer_1632_4A_interrupt
  242. .long Timer_1632_4B_interrupt
  243. .long 0
  244. .long 0
  245. .long 0
  246. .long 0
  247. .long 0
  248. .long 0
  249. .long 0
  250. .long 0
  251. .long 0
  252. .long 0
  253. .long 0
  254. .long 0
  255. .long 0
  256. .long 0
  257. .long 0
  258. .long 0
  259. .long 0
  260. .long 0
  261. .long 0
  262. .long 0
  263. .long Timer_1632_5A_interrupt
  264. .long Timer_1632_5B_interrupt
  265. .long Timer_3264_0A_interrupt
  266. .long Timer_3264_0B_interrupt
  267. .long Timer_3264_1A_interrupt
  268. .long Timer_3264_1B_interrupt
  269. .long Timer_3264_2A_interrupt
  270. .long Timer_3264_2B_interrupt
  271. .long Timer_3264_3A_interrupt
  272. .long Timer_3264_3B_interrupt
  273. .long Timer_3264_4A_interrupt
  274. .long Timer_3264_4B_interrupt
  275. .long Timer_3264_5A_interrupt
  276. .long Timer_3264_5B_interrupt
  277. .long System_Exception_imprecise_interrupt
  278. .weak NMI_interrupt
  279. .weak Hardfault_interrupt
  280. .weak MemManage_interrupt
  281. .weak BusFault_interrupt
  282. .weak UsageFault_interrupt
  283. .weak SWI_interrupt
  284. .weak DebugMonitor_interrupt
  285. .weak PendingSV_interrupt
  286. .weak SysTick_interrupt
  287. .weak GPIO_Port_A_interrupt
  288. .weak GPIO_Port_B_interrupt
  289. .weak GPIO_Port_C_interrupt
  290. .weak GPIO_Port_D_interrupt
  291. .weak GPIO_Port_E_interrupt
  292. .weak UART0_interrupt
  293. .weak UART1_interrupt
  294. .weak SSI0_interrupt
  295. .weak I2C0_interrupt
  296. .weak ADC0_Seq_0_interrupt
  297. .weak ADC0_Seq_1_interrupt
  298. .weak ADC0_Seq_2_interrupt
  299. .weak ADC0_Seq_3_interrupt
  300. .weak Watchdog_0_and_1_interrupt
  301. .weak Timer_1632_0A_interrupt
  302. .weak Timer_1632_0B_interrupt
  303. .weak Timer_1632_1A_interrupt
  304. .weak Timer_1632_1B_interrupt
  305. .weak Timer_1632_2A_interrupt
  306. .weak Timer_1632_2B_interrupt
  307. .weak Analog_Comp_0_interrupt
  308. .weak Analog_Comp_1_interrupt
  309. .weak System_Control_interrupt
  310. .weak Flash_and_EEPROM_interrupt
  311. .weak GPIO_Port_F_interrupt
  312. .weak UART2_interrupt
  313. .weak SSI1_interrupt
  314. .weak Timer_1632_3A_interrupt
  315. .weak Timer_1632_3B_interrupt
  316. .weak I2C1_interrupt
  317. .weak CAN0_interrupt
  318. .weak Hibernation_interrupt
  319. .weak USB_interrupt
  320. .weak uDMA_Software_interrupt
  321. .weak uDMA_Error_interrupt
  322. .weak ADC1_Seq_0_interrupt
  323. .weak ADC1_Seq_1_interrupt
  324. .weak ADC1_Seq_2_interrupt
  325. .weak ADC1_Seq_3_interrupt
  326. .weak SSI2_interrupt
  327. .weak SSI3_interrupt
  328. .weak UART3_interrupt
  329. .weak UART4_interrupt
  330. .weak UART5_interrupt
  331. .weak UART6_interrupt
  332. .weak UART7_interrupt
  333. .weak I2C2_interrupt
  334. .weak I2C3_interrupt
  335. .weak Timer_1632_4A_interrupt
  336. .weak Timer_1632_4B_interrupt
  337. .weak Timer_1632_5A_interrupt
  338. .weak Timer_1632_5B_interrupt
  339. .weak Timer_3264_0A_interrupt
  340. .weak Timer_3264_0B_interrupt
  341. .weak Timer_3264_1A_interrupt
  342. .weak Timer_3264_1B_interrupt
  343. .weak Timer_3264_2A_interrupt
  344. .weak Timer_3264_2B_interrupt
  345. .weak Timer_3264_3A_interrupt
  346. .weak Timer_3264_3B_interrupt
  347. .weak Timer_3264_4A_interrupt
  348. .weak Timer_3264_4B_interrupt
  349. .weak Timer_3264_5A_interrupt
  350. .weak Timer_3264_5B_interrupt
  351. .weak System_Exception_imprecise_interrupt
  352. .set NMI_interrupt, HaltProc
  353. .set Hardfault_interrupt, HaltProc
  354. .set MemManage_interrupt, HaltProc
  355. .set BusFault_interrupt, HaltProc
  356. .set UsageFault_interrupt, HaltProc
  357. .set SWI_interrupt, HaltProc
  358. .set DebugMonitor_interrupt, HaltProc
  359. .set PendingSV_interrupt, HaltProc
  360. .set SysTick_interrupt, HaltProc
  361. .set GPIO_Port_A_interrupt, HaltProc
  362. .set GPIO_Port_B_interrupt, HaltProc
  363. .set GPIO_Port_C_interrupt, HaltProc
  364. .set GPIO_Port_D_interrupt, HaltProc
  365. .set GPIO_Port_E_interrupt, HaltProc
  366. .set UART0_interrupt, HaltProc
  367. .set UART1_interrupt, HaltProc
  368. .set SSI0_interrupt, HaltProc
  369. .set I2C0_interrupt, HaltProc
  370. .set ADC0_Seq_0_interrupt, HaltProc
  371. .set ADC0_Seq_1_interrupt, HaltProc
  372. .set ADC0_Seq_2_interrupt, HaltProc
  373. .set ADC0_Seq_3_interrupt, HaltProc
  374. .set Watchdog_0_and_1_interrupt, HaltProc
  375. .set Timer_1632_0A_interrupt, HaltProc
  376. .set Timer_1632_0B_interrupt, HaltProc
  377. .set Timer_1632_1A_interrupt, HaltProc
  378. .set Timer_1632_1B_interrupt, HaltProc
  379. .set Timer_1632_2A_interrupt, HaltProc
  380. .set Timer_1632_2B_interrupt, HaltProc
  381. .set Analog_Comp_0_interrupt, HaltProc
  382. .set Analog_Comp_1_interrupt, HaltProc
  383. .set System_Control_interrupt, HaltProc
  384. .set Flash_and_EEPROM_interrupt, HaltProc
  385. .set GPIO_Port_F_interrupt, HaltProc
  386. .set UART2_interrupt, HaltProc
  387. .set SSI1_interrupt, HaltProc
  388. .set Timer_1632_3A_interrupt, HaltProc
  389. .set Timer_1632_3B_interrupt, HaltProc
  390. .set I2C1_interrupt, HaltProc
  391. .set CAN0_interrupt, HaltProc
  392. .set Hibernation_interrupt, HaltProc
  393. .set USB_interrupt, HaltProc
  394. .set uDMA_Software_interrupt, HaltProc
  395. .set uDMA_Error_interrupt, HaltProc
  396. .set ADC1_Seq_0_interrupt, HaltProc
  397. .set ADC1_Seq_1_interrupt, HaltProc
  398. .set ADC1_Seq_2_interrupt, HaltProc
  399. .set ADC1_Seq_3_interrupt, HaltProc
  400. .set SSI2_interrupt, HaltProc
  401. .set SSI3_interrupt, HaltProc
  402. .set UART3_interrupt, HaltProc
  403. .set UART4_interrupt, HaltProc
  404. .set UART5_interrupt, HaltProc
  405. .set UART6_interrupt, HaltProc
  406. .set UART7_interrupt, HaltProc
  407. .set I2C2_interrupt, HaltProc
  408. .set I2C3_interrupt, HaltProc
  409. .set Timer_1632_4A_interrupt, HaltProc
  410. .set Timer_1632_4B_interrupt, HaltProc
  411. .set Timer_1632_5A_interrupt, HaltProc
  412. .set Timer_1632_5B_interrupt, HaltProc
  413. .set Timer_3264_0A_interrupt, HaltProc
  414. .set Timer_3264_0B_interrupt, HaltProc
  415. .set Timer_3264_1A_interrupt, HaltProc
  416. .set Timer_3264_1B_interrupt, HaltProc
  417. .set Timer_3264_2A_interrupt, HaltProc
  418. .set Timer_3264_2B_interrupt, HaltProc
  419. .set Timer_3264_3A_interrupt, HaltProc
  420. .set Timer_3264_3B_interrupt, HaltProc
  421. .set Timer_3264_4A_interrupt, HaltProc
  422. .set Timer_3264_4B_interrupt, HaltProc
  423. .set Timer_3264_5A_interrupt, HaltProc
  424. .set Timer_3264_5B_interrupt, HaltProc
  425. .set System_Exception_imprecise_interrupt, HaltProc
  426. .text
  427. end;
  428. end.