stm32f10x_hd.pp 24 KB

123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960616263646566676869707172737475767778798081828384858687888990919293949596979899100101102103104105106107108109110111112113114115116117118119120121122123124125126127128129130131132133134135136137138139140141142143144145146147148149150151152153154155156157158159160161162163164165166167168169170171172173174175176177178179180181182183184185186187188189190191192193194195196197198199200201202203204205206207208209210211212213214215216217218219220221222223224225226227228229230231232233234235236237238239240241242243244245246247248249250251252253254255256257258259260261262263264265266267268269270271272273274275276277278279280281282283284285286287288289290291292293294295296297298299300301302303304305306307308309310311312313314315316317318319320321322323324325326327328329330331332333334335336337338339340341342343344345346347348349350351352353354355356357358359360361362363364365366367368369370371372373374375376377378379380381382383384385386387388389390391392393394395396397398399400401402403404405406407408409410411412413414415416417418419420421422423424425426427428429430431432433434435436437438439440441442443444445446447448449450451452453454455456457458459460461462463464465466467468469470471472473474475476477478479480481482483484485486487488489490491492493494495496497498499500501502503504505506507508509510511512513514515516517518519520521522523524525526527528529530531532533534535536537538539540541542543544545546547548549550551552553554555556557558559560561562563564565566567568569570571572573574575576577578579580581582583584585586587588589590591592593594595596597598599600601602603604605606607608609610611612613614615616617618619620621622623624625626627628629630631632633634635636637638639640641642643644645646647648649650651652653654655656657658659660661662663664665666667668669670671672673674675676677678679680681682683684685686687688689690691692693694695696697698699700701702703704705706707708709710711712713714715716717718719720721722723724725726727728729730731732733734735736737738739740741742743744745746747748749750751752753754755756757758759760761762763764765766767768769770771772773774775776777778779780781782783784785786787788789790791792793794795796797798799800801802803804805806807808809810811812813814815816817818819820821822823824825826827
  1. {
  2. Register definitions and utility code for STM32F10x - HD density
  3. Created by Jeppe Johansen 2012 - [email protected]
  4. }
  5. unit stm32f10x_hd;
  6. {$goto on}
  7. {$define stm32f10x_hd}
  8. interface
  9. type
  10. TBitvector32 = bitpacked array[0..31] of 0..1;
  11. {$PACKRECORDS 2}
  12. const
  13. PeripheralBase = $40000000;
  14. FSMCBase = $60000000;
  15. APB1Base = PeripheralBase;
  16. APB2Base = PeripheralBase+$10000;
  17. AHBBase = PeripheralBase+$20000;
  18. SCS_BASE = $E000E000;
  19. { FSMC }
  20. FSMCBank1NOR1 = FSMCBase+$00000000;
  21. FSMCBank1NOR2 = FSMCBase+$04000000;
  22. FSMCBank1NOR3 = FSMCBase+$08000000;
  23. FSMCBank1NOR4 = FSMCBase+$0C000000;
  24. FSMCBank1PSRAM1 = FSMCBase+$00000000;
  25. FSMCBank1PSRAM2 = FSMCBase+$04000000;
  26. FSMCBank1PSRAM3 = FSMCBase+$08000000;
  27. FSMCBank1PSRAM4 = FSMCBase+$0C000000;
  28. FSMCBank2NAND1 = FSMCBase+$10000000;
  29. FSMCBank3NAND2 = FSMCBase+$20000000;
  30. FSMCBank4PCCARD = FSMCBase+$30000000;
  31. type
  32. TTimerRegisters = record
  33. CR1, res1,
  34. CR2, res2,
  35. SMCR, res3,
  36. DIER, res4,
  37. SR, res5,
  38. EGR, res,
  39. CCMR1, res6,
  40. CCMR2, res7,
  41. CCER, res8,
  42. CNT, res9,
  43. PSC, res10,
  44. ARR, res11,
  45. RCR, res12,
  46. CCR1, res13,
  47. CCR2, res14,
  48. CCR3, res15,
  49. CCR4, res16,
  50. BDTR, res17,
  51. DCR, res18,
  52. DMAR, res19: Word;
  53. end;
  54. TRTCRegisters = record
  55. CRH, res1,
  56. CRL, res2,
  57. PRLH, res3,
  58. PRLL, res4,
  59. DIVH, res5,
  60. DIVL, res6,
  61. CNTH, res7,
  62. CNTL, res8,
  63. ALRH, res9,
  64. ALRL, res10: Word;
  65. end;
  66. TIWDGRegisters = record
  67. KR, res1,
  68. PR, res2,
  69. RLR, res3,
  70. SR, res4: word;
  71. end;
  72. TWWDGRegisters = record
  73. CR, res2,
  74. CFR, res3,
  75. SR, res4: word;
  76. end;
  77. TSPIRegisters = record
  78. CR1, res1,
  79. CR2, res2,
  80. SR, res3,
  81. DR, res4,
  82. CRCPR, res5,
  83. RXCRCR, res6,
  84. TXCRCR, res7,
  85. I2SCFGR, res8,
  86. I2SPR, res9: Word;
  87. end;
  88. TUSARTRegisters = record
  89. SR, res1,
  90. DR, res2,
  91. BRR, res3,
  92. CR1, res4,
  93. CR2, res5,
  94. CR3, res6,
  95. GTPR, res7: Word;
  96. end;
  97. TI2CRegisters = record
  98. CR1, res1,
  99. CR2, res2,
  100. OAR1, res3,
  101. OAR2, res4,
  102. DR, res5,
  103. SR1, res6,
  104. SR2, res7,
  105. CCR, res8: word;
  106. TRISE: byte;
  107. end;
  108. TUSBRegisters = record
  109. EPR: array[0..7] of longword;
  110. res: array[0..7] of longword;
  111. CNTR, res1,
  112. ISTR, res2,
  113. FNR, res3: Word;
  114. DADDR: byte; res4: word; res5: byte;
  115. BTABLE: Word;
  116. end;
  117. TUSBMem = packed array[0..511] of byte;
  118. TCANMailbox = record
  119. IR,
  120. DTR,
  121. DLR,
  122. DHR: longword;
  123. end;
  124. TCANRegisters = record
  125. MCR,
  126. MSR,
  127. TSR,
  128. RF0R,
  129. RF1R,
  130. IER,
  131. ESR,
  132. BTR: longword;
  133. res5: array[$020..$17F] of byte;
  134. TX: array[0..2] of TCANMailbox;
  135. RX: array[0..2] of TCANMailbox;
  136. res6: array[$1D0..$1FF] of byte;
  137. FMR,
  138. FM1R,
  139. res9: longword;
  140. FS1R, res10: word;
  141. res11: longword;
  142. FFA1R, res12: word;
  143. res13: longword;
  144. FA1R, res14: word;
  145. res15: array[$220..$23F] of byte;
  146. FOR1,
  147. FOR2: longword;
  148. FB: array[1..13] of array[1..2] of longword;
  149. end;
  150. TBKPRegisters = record
  151. DR: array[1..10] of record data, res: word; end;
  152. RTCCR,
  153. CR,
  154. CSR,
  155. res1,res2: longword;
  156. DR2: array[11..42] of record data, res: word; end;
  157. end;
  158. TPwrRegisters = record
  159. CR, res: word;
  160. CSR: Word;
  161. end;
  162. TDACRegisters = record
  163. CR,
  164. SWTRIGR: longword;
  165. DHR12R1, res2,
  166. DHR12L1, res3,
  167. DHR8R1, res4,
  168. DHR12R2, res5,
  169. DHR12L2, res6,
  170. DHR8R2, res7: word;
  171. DHR12RD,
  172. DHR12LD: longword;
  173. DHR8RD, res8,
  174. DOR1, res9,
  175. DOR2, res10: Word;
  176. end;
  177. TAFIORegisters = record
  178. EVCR,
  179. MAPR: longword;
  180. EXTICR: array[0..3] of longword;
  181. end;
  182. TEXTIRegisters = record
  183. IMR,
  184. EMR,
  185. RTSR,
  186. FTSR,
  187. SWIER,
  188. PR: longword;
  189. end;
  190. TPortRegisters = record
  191. CRL,
  192. CRH,
  193. IDR,
  194. ODR,
  195. BSRR,
  196. BRR,
  197. LCKR: longword;
  198. end;
  199. TADCRegisters = record
  200. SR,
  201. CR1,
  202. CR2,
  203. SMPR1,
  204. SMPR2: longword;
  205. JOFR1, res2,
  206. JOFR2, res3,
  207. JOFR3, res4,
  208. JOFR4, res5,
  209. HTR, res6,
  210. LTR, res7: word;
  211. SQR1,
  212. SQR2,
  213. SQR3,
  214. JSQR: longword;
  215. JDR1, res8,
  216. JDR2, res9,
  217. JDR3, res10,
  218. JDR4, res11: Word;
  219. DR: longword;
  220. end;
  221. TSDIORegisters = record
  222. POWER,
  223. CLKCR,
  224. ARG: longword;
  225. CMD, res3,
  226. RESPCMD, res4: Word;
  227. RESP1,
  228. RESP2,
  229. RESP3,
  230. RESP4,
  231. DTIMER,
  232. DLEN: longword;
  233. DCTRL, res5: word;
  234. DCOUNT,
  235. STA,
  236. ICR,
  237. MASK,
  238. FIFOCNT,
  239. FIFO: longword;
  240. end;
  241. TDMAChannel = record
  242. CCR, res1,
  243. CNDTR, res2: word;
  244. CPAR,
  245. CMAR,
  246. res: longword;
  247. end;
  248. TDMARegisters = record
  249. ISR,
  250. IFCR: longword;
  251. Channel: array[0..7] of TDMAChannel;
  252. end;
  253. TRCCRegisters = record
  254. CR,
  255. CFGR,
  256. CIR,
  257. APB2RSTR,
  258. APB1RSTR,
  259. AHBENR,
  260. APB2ENR,
  261. APB1ENR,
  262. BDCR,
  263. CSR: longword;
  264. end;
  265. TCRCRegisters = record
  266. DR: longword;
  267. IDR: byte; res1: word; res2: byte;
  268. CR: byte;
  269. end;
  270. TFlashRegisters = record
  271. ACR,
  272. KEYR,
  273. OPTKEYR,
  274. SR,
  275. CR,
  276. AR,
  277. res,
  278. OBR,
  279. WRPR: longword;
  280. end;
  281. TNVICRegisters = record
  282. ISER: array[0..7] of longword;
  283. reserved0: array[0..23] of longword;
  284. ICER: array[0..7] of longword;
  285. reserved1: array[0..23] of longword;
  286. ISPR: array[0..7] of longword;
  287. reserved2: array[0..23] of longword;
  288. ICPR: array[0..7] of longword;
  289. reserved3: array[0..23] of longword;
  290. IABR: array[0..7] of longword;
  291. reserved4: array[0..55] of longword;
  292. IP: array[0..239] of byte;
  293. reserved5: array[0..643] of longword;
  294. STIR: longword;
  295. end;
  296. TSCBRegisters = record
  297. CPUID, {!< CPU ID Base Register }
  298. ICSR, {!< Interrupt Control State Register }
  299. VTOR, {!< Vector Table Offset Register }
  300. AIRCR, {!< Application Interrupt / Reset Control Register }
  301. SCR, {!< System Control Register }
  302. CCR: longword; {!< Configuration Control Register }
  303. SHP: array[0..11] of byte; {!< System Handlers Priority Registers (4-7, 8-11, 12-15) }
  304. SHCSR, {!< System Handler Control and State Register }
  305. CFSR, {!< Configurable Fault Status Register }
  306. HFSR, {!< Hard Fault Status Register }
  307. DFSR, {!< Debug Fault Status Register }
  308. MMFAR, {!< Mem Manage Address Register }
  309. BFAR, {!< Bus Fault Address Register }
  310. AFSR: longword; {!< Auxiliary Fault Status Register }
  311. PFR: array[0..1] of longword; {!< Processor Feature Register }
  312. DFR, {!< Debug Feature Register }
  313. ADR: longword; {!< Auxiliary Feature Register }
  314. MMFR: array[0..3] of longword; {!< Memory Model Feature Register }
  315. ISAR: array[0..4] of longword; {!< ISA Feature Register }
  316. end;
  317. TSysTickRegisters = record
  318. Ctrl,
  319. Load,
  320. Val,
  321. Calib: longword;
  322. end;
  323. TFSMC_Bank1 = record
  324. BCR1 : longword;
  325. BTR1 : longword;
  326. BCR2 : longword;
  327. BTR2 : longword;
  328. BCR3 : longword;
  329. BTR3 : longword;
  330. BCR4 : longword;
  331. BTR4 : longword;
  332. end;
  333. TFSMC_Bank1E = record
  334. BWTR1 : longword;
  335. res1 : longword;
  336. BWTR2 : longword;
  337. res2 : longword;
  338. BWTR3 : longword;
  339. res3 : longword;
  340. BWTR4 : longword;
  341. end;
  342. TFSMC_Bank2 = record
  343. PCR2,
  344. SR2,
  345. PMEM2,
  346. PATT2,
  347. res1,
  348. ECCR2 : longword
  349. end;
  350. TFSMC_Bank3 = record
  351. PCR3,
  352. SR3,
  353. PMEM3,
  354. PATT3,
  355. RESERVED0,
  356. ECCR3 : longword;
  357. end;
  358. TFSMC_Bank4 = record
  359. PCR4,
  360. SR4,
  361. PMEM4,
  362. PATT4,
  363. PIO4 : longword;
  364. end;
  365. {$ALIGN 2}
  366. var
  367. { Timers }
  368. Timer1: TTimerRegisters absolute (APB2Base+$2C00);
  369. Timer2: TTimerRegisters absolute (APB1Base+$0000);
  370. Timer3: TTimerRegisters absolute (APB1Base+$0400);
  371. Timer4: TTimerRegisters absolute (APB1Base+$0800);
  372. Timer5: TTimerRegisters absolute (APB1Base+$0C00);
  373. Timer6: TTimerRegisters absolute (APB1Base+$1000);
  374. Timer7: TTimerRegisters absolute (APB1Base+$1400);
  375. Timer8: TTimerRegisters absolute (APB2Base+$3400);
  376. { RTC }
  377. RTC: TRTCRegisters absolute (APB1Base+$2800);
  378. { WDG }
  379. WWDG: TWWDGRegisters absolute (APB1Base+$2C00);
  380. IWDG: TIWDGRegisters absolute (APB1Base+$3000);
  381. { SPI }
  382. SPI1: TSPIRegisters absolute (APB2Base+$3000);
  383. SPI2: TSPIRegisters absolute (APB1Base+$3800);
  384. SPI3: TSPIRegisters absolute (APB1Base+$3C00);
  385. { USART/UART }
  386. USART1: TUSARTRegisters absolute (APB2Base+$3800);
  387. USART2: TUSARTRegisters absolute (APB1Base+$4400);
  388. USART3: TUSARTRegisters absolute (APB1Base+$4800);
  389. UART4: TUSARTRegisters absolute (APB1Base+$4C00);
  390. UART5: TUSARTRegisters absolute (APB1Base+$5000);
  391. { I2C }
  392. I2C1: TI2CRegisters absolute (APB1Base+$5400);
  393. I2C2: TI2CRegisters absolute (APB1Base+$5800);
  394. { USB }
  395. USB: TUSBRegisters absolute (APB1Base+$5C00);
  396. USBMem: TUSBMem absolute (APB1Base+$6000);
  397. { CAN }
  398. CAN: TCANRegisters absolute (APB1Base+$6800);
  399. { BKP }
  400. BKP: TBKPRegisters absolute (APB1Base+$6C00);
  401. { PWR }
  402. PWR: TPwrRegisters absolute (APB1Base+$7000);
  403. { DAC }
  404. DAC: TDACRegisters absolute (APB1Base+$7400);
  405. { GPIO }
  406. AFIO: TAFIORegisters absolute (APB2Base+$0);
  407. EXTI: TEXTIRegisters absolute (APB2Base+$0400);
  408. PortA: TPortRegisters absolute (APB2Base+$0800);
  409. PortB: TPortRegisters absolute (APB2Base+$0C00);
  410. PortC: TPortRegisters absolute (APB2Base+$1000);
  411. PortD: TPortRegisters absolute (APB2Base+$1400);
  412. PortE: TPortRegisters absolute (APB2Base+$1800);
  413. PortF: TPortRegisters absolute (APB2Base+$1C00);
  414. PortG: TPortRegisters absolute (APB2Base+$2000);
  415. { ADC }
  416. ADC1: TADCRegisters absolute (APB2Base+$2400);
  417. ADC2: TADCRegisters absolute (APB2Base+$2800);
  418. ADC3: TADCRegisters absolute (APB2Base+$3C00);
  419. { SDIO }
  420. SDIO: TSDIORegisters absolute (APB2Base+$8000);
  421. { DMA }
  422. DMA1: TDMARegisters absolute (AHBBase+$0000);
  423. DMA2: TDMARegisters absolute (AHBBase+$0400);
  424. { RCC }
  425. RCC: TRCCRegisters absolute (AHBBase+$1000);
  426. { Flash }
  427. Flash: TFlashRegisters absolute (AHBBase+$2000);
  428. { CRC }
  429. CRC: TCRCRegisters absolute (AHBBase+$3000);
  430. { SCB }
  431. SCB: TSCBRegisters absolute (SCS_BASE+$0D00);
  432. { SysTick }
  433. SysTick: TSysTickRegisters absolute (SCS_BASE+$0010);
  434. { NVIC }
  435. NVIC: TNVICRegisters absolute (SCS_BASE+$0100);
  436. { FSMC }
  437. FSMC_Bank1 : TFSMC_Bank1 absolute (FSMCBase + $40000000);
  438. FSMC_Bank1E : TFSMC_Bank1E absolute (FSMCBase + $40000104);
  439. FSMC_Bank2 : TFSMC_Bank2 absolute (FSMCBase + $40000060);
  440. FSMC_Bank3 : TFSMC_Bank3 absolute (FSMCBase + $40000080);
  441. FSMC_Bank4 : TFSMC_Bank4 absolute (FSMCBase + $400000A0);
  442. implementation
  443. procedure NMI_interrupt; external name 'NMI_interrupt';
  444. procedure Hardfault_interrupt; external name 'Hardfault_interrupt';
  445. procedure MemManage_interrupt; external name 'MemManage_interrupt';
  446. procedure BusFault_interrupt; external name 'BusFault_interrupt';
  447. procedure UsageFault_interrupt; external name 'UsageFault_interrupt';
  448. procedure SWI_interrupt; external name 'SWI_interrupt';
  449. procedure DebugMonitor_interrupt; external name 'DebugMonitor_interrupt';
  450. procedure PendingSV_interrupt; external name 'PendingSV_interrupt';
  451. procedure SysTick_interrupt; external name 'SysTick_interrupt';
  452. procedure Window_watchdog_interrupt; external name 'Window_watchdog_interrupt';
  453. procedure PVD_through_EXTI_Line_detection_interrupt; external name 'PVD_through_EXTI_Line_detection_interrupt';
  454. procedure Tamper_interrupt; external name 'Tamper_interrupt';
  455. procedure RTC_global_interrupt; external name 'RTC_global_interrupt';
  456. procedure Flash_global_interrupt; external name 'Flash_global_interrupt';
  457. procedure RCC_global_interrupt; external name 'RCC_global_interrupt';
  458. procedure EXTI_Line0_interrupt; external name 'EXTI_Line0_interrupt';
  459. procedure EXTI_Line1_interrupt; external name 'EXTI_Line1_interrupt';
  460. procedure EXTI_Line2_interrupt; external name 'EXTI_Line2_interrupt';
  461. procedure EXTI_Line3_interrupt; external name 'EXTI_Line3_interrupt';
  462. procedure EXTI_Line4_interrupt; external name 'EXTI_Line4_interrupt';
  463. procedure DMA1_Channel1_global_interrupt; external name 'DMA1_Channel1_global_interrupt';
  464. procedure DMA1_Channel2_global_interrupt; external name 'DMA1_Channel2_global_interrupt';
  465. procedure DMA1_Channel3_global_interrupt; external name 'DMA1_Channel3_global_interrupt';
  466. procedure DMA1_Channel4_global_interrupt; external name 'DMA1_Channel4_global_interrupt';
  467. procedure DMA1_Channel5_global_interrupt; external name 'DMA1_Channel5_global_interrupt';
  468. procedure DMA1_Channel6_global_interrupt; external name 'DMA1_Channel6_global_interrupt';
  469. procedure DMA1_Channel7_global_interrupt; external name 'DMA1_Channel7_global_interrupt';
  470. procedure ADC1_and_ADC2_global_interrupt; external name 'ADC1_and_ADC2_global_interrupt';
  471. procedure USB_High_Priority_or_CAN_TX_interrupts; external name 'USB_High_Priority_or_CAN_TX_interrupts';
  472. procedure USB_Low_Priority_or_CAN_RX0_interrupts; external name 'USB_Low_Priority_or_CAN_RX0_interrupts';
  473. procedure CAN_RX1_interrupt; external name 'CAN_RX1_interrupt';
  474. procedure CAN_SCE_interrupt; external name 'CAN_SCE_interrupt';
  475. procedure EXTI_Line9_5_interrupts; external name 'EXTI_Line9_5_interrupts';
  476. procedure TIM1_Break_interrupt; external name 'TIM1_Break_interrupt';
  477. procedure TIM1_Update_interrupt; external name 'TIM1_Update_interrupt';
  478. procedure TIM1_Trigger_and_Commutation_interrupts; external name 'TIM1_Trigger_and_Commutation_interrupts';
  479. procedure TIM1_Capture_Compare_interrupt; external name 'TIM1_Capture_Compare_interrupt';
  480. procedure TIM2_global_interrupt; external name 'TIM2_global_interrupt';
  481. procedure TIM3_global_interrupt; external name 'TIM3_global_interrupt';
  482. procedure TIM4_global_interrupt; external name 'TIM4_global_interrupt';
  483. procedure I2C1_event_interrupt; external name 'I2C1_event_interrupt';
  484. procedure I2C1_error_interrupt; external name 'I2C1_error_interrupt';
  485. procedure I2C2_event_interrupt; external name 'I2C2_event_interrupt';
  486. procedure I2C2_error_interrupt; external name 'I2C2_error_interrupt';
  487. procedure SPI1_global_interrupt; external name 'SPI1_global_interrupt';
  488. procedure SPI2_global_interrupt; external name 'SPI2_global_interrupt';
  489. procedure USART1_global_interrupt; external name 'USART1_global_interrupt';
  490. procedure USART2_global_interrupt; external name 'USART2_global_interrupt';
  491. procedure USART3_global_interrupt; external name 'USART3_global_interrupt';
  492. procedure EXTI_Line15_10_interrupts; external name 'EXTI_Line15_10_interrupts';
  493. procedure RTC_alarm_through_EXTI_line_interrupt; external name 'RTC_alarm_through_EXTI_line_interrupt';
  494. procedure USB_wakeup_from_suspend_through_EXTI_line_interrupt; external name 'USB_wakeup_from_suspend_through_EXTI_line_interrupt';
  495. procedure TIM8_Break_interrupt; external name 'TIM8_Break_interrupt';
  496. procedure TIM8_Update_interrupt; external name 'TIM8_Update_interrupt';
  497. procedure TIM8_Trigger_and_Commutation_interrupts; external name 'TIM8_Trigger_and_Commutation_interrupts';
  498. procedure TIM8_Capture_Compare_interrupt; external name 'TIM8_Capture_Compare_interrupt';
  499. procedure ADC3_global_interrupt; external name 'ADC3_global_interrupt';
  500. procedure FSMC_global_interrupt; external name 'FSMC_global_interrupt';
  501. procedure SDIO_global_interrupt; external name 'SDIO_global_interrupt';
  502. procedure TIM5_global_interrupt; external name 'TIM5_global_interrupt';
  503. procedure SPI3_global_interrupt; external name 'SPI3_global_interrupt';
  504. procedure UART4_global_interrupt; external name 'UART4_global_interrupt';
  505. procedure UART5_global_interrupt; external name 'UART5_global_interrupt';
  506. procedure TIM6_global_interrupt; external name 'TIM6_global_interrupt';
  507. procedure TIM7_global_interrupt; external name 'TIM7_global_interrupt';
  508. procedure DMA2_Channel1_global_interrupt; external name 'DMA2_Channel1_global_interrupt';
  509. procedure DMA2_Channel2_global_interrupt; external name 'DMA2_Channel2_global_interrupt';
  510. procedure DMA2_Channel3_global_interrupt; external name 'DMA2_Channel3_global_interrupt';
  511. procedure DMA2_Channel4_and_DMA2_Channel5_global_interrupts; external name 'DMA2_Channel4_and_DMA2_Channel5_global_interrupts';
  512. {$i cortexm3_start.inc}
  513. procedure Vectors; assembler; nostackframe;
  514. label interrupt_vectors;
  515. asm
  516. .section ".init.interrupt_vectors"
  517. interrupt_vectors:
  518. .long _stack_top
  519. .long Startup
  520. .long NMI_interrupt
  521. .long Hardfault_interrupt
  522. .long MemManage_interrupt
  523. .long BusFault_interrupt
  524. .long UsageFault_interrupt
  525. .long 0
  526. .long 0
  527. .long 0
  528. .long 0
  529. .long SWI_interrupt
  530. .long DebugMonitor_interrupt
  531. .long 0
  532. .long PendingSV_interrupt
  533. .long SysTick_interrupt
  534. .long Window_watchdog_interrupt
  535. .long PVD_through_EXTI_Line_detection_interrupt
  536. .long Tamper_interrupt
  537. .long RTC_global_interrupt
  538. .long Flash_global_interrupt
  539. .long RCC_global_interrupt
  540. .long EXTI_Line0_interrupt
  541. .long EXTI_Line1_interrupt
  542. .long EXTI_Line2_interrupt
  543. .long EXTI_Line3_interrupt
  544. .long EXTI_Line4_interrupt
  545. .long DMA1_Channel1_global_interrupt
  546. .long DMA1_Channel2_global_interrupt
  547. .long DMA1_Channel3_global_interrupt
  548. .long DMA1_Channel4_global_interrupt
  549. .long DMA1_Channel5_global_interrupt
  550. .long DMA1_Channel6_global_interrupt
  551. .long DMA1_Channel7_global_interrupt
  552. .long ADC1_and_ADC2_global_interrupt
  553. .long USB_High_Priority_or_CAN_TX_interrupts
  554. .long USB_Low_Priority_or_CAN_RX0_interrupts
  555. .long CAN_RX1_interrupt
  556. .long CAN_SCE_interrupt
  557. .long EXTI_Line9_5_interrupts
  558. .long TIM1_Break_interrupt
  559. .long TIM1_Update_interrupt
  560. .long TIM1_Trigger_and_Commutation_interrupts
  561. .long TIM1_Capture_Compare_interrupt
  562. .long TIM2_global_interrupt
  563. .long TIM3_global_interrupt
  564. .long TIM4_global_interrupt
  565. .long I2C1_event_interrupt
  566. .long I2C1_error_interrupt
  567. .long I2C2_event_interrupt
  568. .long I2C2_error_interrupt
  569. .long SPI1_global_interrupt
  570. .long SPI2_global_interrupt
  571. .long USART1_global_interrupt
  572. .long USART2_global_interrupt
  573. .long USART3_global_interrupt
  574. .long EXTI_Line15_10_interrupts
  575. .long RTC_alarm_through_EXTI_line_interrupt
  576. .long USB_wakeup_from_suspend_through_EXTI_line_interrupt
  577. .long TIM8_Break_interrupt
  578. .long TIM8_Update_interrupt
  579. .long TIM8_Trigger_and_Commutation_interrupts
  580. .long TIM8_Capture_Compare_interrupt
  581. .long ADC3_global_interrupt
  582. .long FSMC_global_interrupt
  583. .long SDIO_global_interrupt
  584. .long TIM5_global_interrupt
  585. .long SPI3_global_interrupt
  586. .long UART4_global_interrupt
  587. .long UART5_global_interrupt
  588. .long TIM6_global_interrupt
  589. .long TIM7_global_interrupt
  590. .long DMA2_Channel1_global_interrupt
  591. .long DMA2_Channel2_global_interrupt
  592. .long DMA2_Channel3_global_interrupt
  593. .long DMA2_Channel4_and_DMA2_Channel5_global_interrupts
  594. .weak NMI_interrupt
  595. .weak Hardfault_interrupt
  596. .weak MemManage_interrupt
  597. .weak BusFault_interrupt
  598. .weak UsageFault_interrupt
  599. .weak SWI_interrupt
  600. .weak DebugMonitor_interrupt
  601. .weak PendingSV_interrupt
  602. .weak SysTick_interrupt
  603. .weak Window_watchdog_interrupt
  604. .weak PVD_through_EXTI_Line_detection_interrupt
  605. .weak Tamper_interrupt
  606. .weak RTC_global_interrupt
  607. .weak Flash_global_interrupt
  608. .weak RCC_global_interrupt
  609. .weak EXTI_Line0_interrupt
  610. .weak EXTI_Line1_interrupt
  611. .weak EXTI_Line2_interrupt
  612. .weak EXTI_Line3_interrupt
  613. .weak EXTI_Line4_interrupt
  614. .weak DMA1_Channel1_global_interrupt
  615. .weak DMA1_Channel2_global_interrupt
  616. .weak DMA1_Channel3_global_interrupt
  617. .weak DMA1_Channel4_global_interrupt
  618. .weak DMA1_Channel5_global_interrupt
  619. .weak DMA1_Channel6_global_interrupt
  620. .weak DMA1_Channel7_global_interrupt
  621. .weak ADC1_and_ADC2_global_interrupt
  622. .weak USB_High_Priority_or_CAN_TX_interrupts
  623. .weak USB_Low_Priority_or_CAN_RX0_interrupts
  624. .weak CAN_RX1_interrupt
  625. .weak CAN_SCE_interrupt
  626. .weak EXTI_Line9_5_interrupts
  627. .weak TIM1_Break_interrupt
  628. .weak TIM1_Update_interrupt
  629. .weak TIM1_Trigger_and_Commutation_interrupts
  630. .weak TIM1_Capture_Compare_interrupt
  631. .weak TIM2_global_interrupt
  632. .weak TIM3_global_interrupt
  633. .weak TIM4_global_interrupt
  634. .weak I2C1_event_interrupt
  635. .weak I2C1_error_interrupt
  636. .weak I2C2_event_interrupt
  637. .weak I2C2_error_interrupt
  638. .weak SPI1_global_interrupt
  639. .weak SPI2_global_interrupt
  640. .weak USART1_global_interrupt
  641. .weak USART2_global_interrupt
  642. .weak USART3_global_interrupt
  643. .weak EXTI_Line15_10_interrupts
  644. .weak RTC_alarm_through_EXTI_line_interrupt
  645. .weak USB_wakeup_from_suspend_through_EXTI_line_interrupt
  646. .weak TIM8_Break_interrupt
  647. .weak TIM8_Update_interrupt
  648. .weak TIM8_Trigger_and_Commutation_interrupts
  649. .weak TIM8_Capture_Compare_interrupt
  650. .weak ADC3_global_interrupt
  651. .weak FSMC_global_interrupt
  652. .weak SDIO_global_interrupt
  653. .weak TIM5_global_interrupt
  654. .weak SPI3_global_interrupt
  655. .weak UART4_global_interrupt
  656. .weak UART5_global_interrupt
  657. .weak TIM6_global_interrupt
  658. .weak TIM7_global_interrupt
  659. .weak DMA2_Channel1_global_interrupt
  660. .weak DMA2_Channel2_global_interrupt
  661. .weak DMA2_Channel3_global_interrupt
  662. .weak DMA2_Channel4_and_DMA2_Channel5_global_interrupts
  663. .set NMI_interrupt, Startup
  664. .set Hardfault_interrupt, Startup
  665. .set MemManage_interrupt, Startup
  666. .set BusFault_interrupt, Startup
  667. .set UsageFault_interrupt, Startup
  668. .set SWI_interrupt, Startup
  669. .set DebugMonitor_interrupt, Startup
  670. .set PendingSV_interrupt, Startup
  671. .set SysTick_interrupt, Startup
  672. .set Window_watchdog_interrupt, Startup
  673. .set PVD_through_EXTI_Line_detection_interrupt, Startup
  674. .set Tamper_interrupt, Startup
  675. .set RTC_global_interrupt, Startup
  676. .set Flash_global_interrupt, Startup
  677. .set RCC_global_interrupt, Startup
  678. .set EXTI_Line0_interrupt, Startup
  679. .set EXTI_Line1_interrupt, Startup
  680. .set EXTI_Line2_interrupt, Startup
  681. .set EXTI_Line3_interrupt, Startup
  682. .set EXTI_Line4_interrupt, Startup
  683. .set DMA1_Channel1_global_interrupt, Startup
  684. .set DMA1_Channel2_global_interrupt, Startup
  685. .set DMA1_Channel3_global_interrupt, Startup
  686. .set DMA1_Channel4_global_interrupt, Startup
  687. .set DMA1_Channel5_global_interrupt, Startup
  688. .set DMA1_Channel6_global_interrupt, Startup
  689. .set DMA1_Channel7_global_interrupt, Startup
  690. .set ADC1_and_ADC2_global_interrupt, Startup
  691. .set USB_High_Priority_or_CAN_TX_interrupts, Startup
  692. .set USB_Low_Priority_or_CAN_RX0_interrupts, Startup
  693. .set CAN_RX1_interrupt, Startup
  694. .set CAN_SCE_interrupt, Startup
  695. .set EXTI_Line9_5_interrupts, Startup
  696. .set TIM1_Break_interrupt, Startup
  697. .set TIM1_Update_interrupt, Startup
  698. .set TIM1_Trigger_and_Commutation_interrupts, Startup
  699. .set TIM1_Capture_Compare_interrupt, Startup
  700. .set TIM2_global_interrupt, Startup
  701. .set TIM3_global_interrupt, Startup
  702. .set TIM4_global_interrupt, Startup
  703. .set I2C1_event_interrupt, Startup
  704. .set I2C1_error_interrupt, Startup
  705. .set I2C2_event_interrupt, Startup
  706. .set I2C2_error_interrupt, Startup
  707. .set SPI1_global_interrupt, Startup
  708. .set SPI2_global_interrupt, Startup
  709. .set USART1_global_interrupt, Startup
  710. .set USART2_global_interrupt, Startup
  711. .set USART3_global_interrupt, Startup
  712. .set EXTI_Line15_10_interrupts, Startup
  713. .set RTC_alarm_through_EXTI_line_interrupt, Startup
  714. .set USB_wakeup_from_suspend_through_EXTI_line_interrupt, Startup
  715. .set TIM8_Break_interrupt, Startup
  716. .set TIM8_Update_interrupt, Startup
  717. .set TIM8_Trigger_and_Commutation_interrupts, Startup
  718. .set TIM8_Capture_Compare_interrupt, Startup
  719. .set ADC3_global_interrupt, Startup
  720. .set FSMC_global_interrupt, Startup
  721. .set SDIO_global_interrupt, Startup
  722. .set TIM5_global_interrupt, Startup
  723. .set SPI3_global_interrupt, Startup
  724. .set UART4_global_interrupt, Startup
  725. .set UART5_global_interrupt, Startup
  726. .set TIM6_global_interrupt, Startup
  727. .set TIM7_global_interrupt, Startup
  728. .set DMA2_Channel1_global_interrupt, Startup
  729. .set DMA2_Channel2_global_interrupt, Startup
  730. .set DMA2_Channel3_global_interrupt, Startup
  731. .set DMA2_Channel4_and_DMA2_Channel5_global_interrupts, Startup
  732. .text
  733. end;
  734. end.