mk22f51212.pp 73 KB

1234567891011121314151617181920212223242526272829303132333435363738394041424344454647484950515253545556575859606162636465666768697071727374757677787980818283848586878889909192939495969798991001011021031041051061071081091101111121131141151161171181191201211221231241251261271281291301311321331341351361371381391401411421431441451461471481491501511521531541551561571581591601611621631641651661671681691701711721731741751761771781791801811821831841851861871881891901911921931941951961971981992002012022032042052062072082092102112122132142152162172182192202212222232242252262272282292302312322332342352362372382392402412422432442452462472482492502512522532542552562572582592602612622632642652662672682692702712722732742752762772782792802812822832842852862872882892902912922932942952962972982993003013023033043053063073083093103113123133143153163173183193203213223233243253263273283293303313323333343353363373383393403413423433443453463473483493503513523533543553563573583593603613623633643653663673683693703713723733743753763773783793803813823833843853863873883893903913923933943953963973983994004014024034044054064074084094104114124134144154164174184194204214224234244254264274284294304314324334344354364374384394404414424434444454464474484494504514524534544554564574584594604614624634644654664674684694704714724734744754764774784794804814824834844854864874884894904914924934944954964974984995005015025035045055065075085095105115125135145155165175185195205215225235245255265275285295305315325335345355365375385395405415425435445455465475485495505515525535545555565575585595605615625635645655665675685695705715725735745755765775785795805815825835845855865875885895905915925935945955965975985996006016026036046056066076086096106116126136146156166176186196206216226236246256266276286296306316326336346356366376386396406416426436446456466476486496506516526536546556566576586596606616626636646656666676686696706716726736746756766776786796806816826836846856866876886896906916926936946956966976986997007017027037047057067077087097107117127137147157167177187197207217227237247257267277287297307317327337347357367377387397407417427437447457467477487497507517527537547557567577587597607617627637647657667677687697707717727737747757767777787797807817827837847857867877887897907917927937947957967977987998008018028038048058068078088098108118128138148158168178188198208218228238248258268278288298308318328338348358368378388398408418428438448458468478488498508518528538548558568578588598608618628638648658668678688698708718728738748758768778788798808818828838848858868878888898908918928938948958968978988999009019029039049059069079089099109119129139149159169179189199209219229239249259269279289299309319329339349359369379389399409419429439449459469479489499509519529539549559569579589599609619629639649659669679689699709719729739749759769779789799809819829839849859869879889899909919929939949959969979989991000100110021003100410051006100710081009101010111012101310141015101610171018101910201021102210231024102510261027102810291030103110321033103410351036103710381039104010411042104310441045104610471048104910501051105210531054105510561057105810591060106110621063106410651066106710681069107010711072107310741075107610771078107910801081108210831084108510861087108810891090109110921093109410951096109710981099110011011102110311041105110611071108110911101111111211131114111511161117111811191120112111221123112411251126112711281129113011311132113311341135113611371138113911401141114211431144114511461147114811491150115111521153115411551156115711581159116011611162116311641165116611671168116911701171117211731174117511761177117811791180118111821183118411851186118711881189119011911192119311941195119611971198119912001201120212031204120512061207120812091210121112121213121412151216121712181219122012211222122312241225122612271228122912301231123212331234123512361237123812391240124112421243124412451246124712481249125012511252125312541255125612571258125912601261126212631264126512661267126812691270127112721273127412751276127712781279128012811282128312841285128612871288128912901291129212931294129512961297129812991300130113021303130413051306130713081309131013111312131313141315131613171318131913201321132213231324132513261327132813291330133113321333133413351336133713381339134013411342134313441345134613471348134913501351135213531354135513561357135813591360136113621363136413651366136713681369137013711372137313741375137613771378137913801381138213831384138513861387138813891390139113921393139413951396139713981399140014011402140314041405140614071408140914101411141214131414141514161417141814191420142114221423142414251426142714281429143014311432143314341435143614371438143914401441144214431444144514461447144814491450145114521453145414551456145714581459146014611462146314641465146614671468146914701471147214731474147514761477147814791480148114821483148414851486148714881489149014911492149314941495149614971498149915001501150215031504150515061507150815091510151115121513151415151516151715181519152015211522152315241525152615271528152915301531153215331534153515361537153815391540154115421543154415451546154715481549155015511552155315541555155615571558155915601561156215631564156515661567156815691570157115721573157415751576157715781579158015811582158315841585158615871588158915901591159215931594159515961597159815991600160116021603160416051606160716081609161016111612161316141615161616171618161916201621162216231624162516261627162816291630163116321633
  1. {$IFNDEF FPC_DOTTEDUNITS}
  2. unit mk22f51212;
  3. {$ENDIF FPC_DOTTEDUNITS}
  4. interface
  5. {$PACKRECORDS 2}
  6. {$GOTO ON}
  7. {$MODESWITCH ADVANCEDRECORDS}
  8. // ** ###################################################################
  9. // ** Compilers: ARM Compiler
  10. // ** Freescale C/C++ for Embedded ARM
  11. // ** GNU C Compiler
  12. // ** GNU C Compiler - CodeSourcery Sourcery G++
  13. // ** IAR ANSI C/C++ Compiler for ARM
  14. // **
  15. // ** Reference manual: K22P121M120SF7RM, Rev.0.61, Jan 10, 2014
  16. // ** Version: rev. 2.3, 2014-01-13
  17. // **
  18. // ** Abstract:
  19. // ** CMSIS Peripheral Access Layer for MK22F51212
  20. // **
  21. // ** Copyright: 1997 - 2014 Freescale, Inc. All Rights Reserved.
  22. // **
  23. // ** http: www.freescale.com
  24. // ** mail: [email protected]
  25. // **
  26. // ** Revisions:
  27. // ** - rev. 1.0 (2013-07-23)
  28. // ** Initial version.
  29. // ** - rev. 1.1 (2013-09-17)
  30. // ** RM rev. 0.4 update.
  31. // ** - rev. 2.0 (2013-10-29)
  32. // ** Register accessor macros added to the memory map.
  33. // ** Symbols for Processor Expert memory map compatibility added to the memory map.
  34. // ** Startup file for gcc has been updated according to CMSIS 3.2.
  35. // ** System initialization updated.
  36. // ** - rev. 2.1 (2013-10-29)
  37. // ** Definition of BITBAND macros updated to support peripherals with 32-bit acces disabled.
  38. // ** - rev. 2.2 (2013-12-20)
  39. // ** Update according to reference manual rev. 0.6,
  40. // ** - rev. 2.3 (2014-01-13)
  41. // ** Update according to reference manual rev. 0.61,
  42. // **
  43. // ** ###################################################################
  44. // !
  45. // * @file MK22F51212.h
  46. // * @version 2.3
  47. // * @date 2014-01-13
  48. // CMSIS Peripheral Access Layer for MK22F51212
  49. // *
  50. // * CMSIS Peripheral Access Layer for MK22F51212
  51. // ----------------------------------------------------------------------------
  52. // -- MCU activation
  53. // ----------------------------------------------------------------------------
  54. // Prevention from multiple including the same memory map
  55. // Check if another memory map has not been also included
  56. // * Memory map major version (memory maps with equal major version number are
  57. // * compatible)
  58. // * Memory map minor version
  59. // Macro to calculate address of an aliased word in the peripheral
  60. // * bitband area for a peripheral register and bit (bit band region 0x40000000 to
  61. // * 0x400FFFFF).
  62. // * @param Reg Register to access.
  63. // * @param Bit Bit number to access.
  64. // * @return Address of the aliased word in the peripheral bitband area.
  65. // Macro to access a single bit of a peripheral register (bit band region
  66. // * 0x40000000 to 0x400FFFFF) using the bit-band alias region access. Can
  67. // * be used for peripherals with 32bit access allowed.
  68. // * @param Reg Register to access.
  69. // * @param Bit Bit number to access.
  70. // * @return Value of the targeted bit in the bit band region.
  71. // Macro to access a single bit of a peripheral register (bit band region
  72. // * 0x40000000 to 0x400FFFFF) using the bit-band alias region access. Can
  73. // * be used for peripherals with 16bit access allowed.
  74. // * @param Reg Register to access.
  75. // * @param Bit Bit number to access.
  76. // * @return Value of the targeted bit in the bit band region.
  77. // Macro to access a single bit of a peripheral register (bit band region
  78. // * 0x40000000 to 0x400FFFFF) using the bit-band alias region access. Can
  79. // * be used for peripherals with 8bit access allowed.
  80. // * @param Reg Register to access.
  81. // * @param Bit Bit number to access.
  82. // * @return Value of the targeted bit in the bit band region.
  83. // ----------------------------------------------------------------------------
  84. // -- Interrupt vector numbers
  85. // ----------------------------------------------------------------------------
  86. // !
  87. // * Interrupt Number Definitions
  88. type
  89. TIRQn_Enum = (
  90. NonMaskableInt_IRQn = -14, // *< Non Maskable Interrupt
  91. HardFault_IRQn = -13, // *< Cortex-M4 SV Hard Fault Interrupt
  92. MemoryManagement_IRQn = -12, // *< Cortex-M4 Memory Management Interrupt
  93. BusFault_IRQn = -11, // *< Cortex-M4 Bus Fault Interrupt
  94. UsageFault_IRQn = -10, // *< Cortex-M4 Usage Fault Interrupt
  95. SVCall_IRQn = -5, // *< Cortex-M4 SV Call Interrupt
  96. DebugMonitor_IRQn = -4, // *< Cortex-M4 Debug Monitor Interrupt
  97. PendSV_IRQn = -2, // *< Cortex-M4 Pend SV Interrupt
  98. SysTick_IRQn = -1, // *< Cortex-M4 System Tick Interrupt
  99. DMA0_IRQn = 0, // *< DMA Channel 0 Transfer Complete
  100. DMA1_IRQn = 1, // *< DMA Channel 1 Transfer Complete
  101. DMA2_IRQn = 2, // *< DMA Channel 2 Transfer Complete
  102. DMA3_IRQn = 3, // *< DMA Channel 3 Transfer Complete
  103. DMA4_IRQn = 4, // *< DMA Channel 4 Transfer Complete
  104. DMA5_IRQn = 5, // *< DMA Channel 5 Transfer Complete
  105. DMA6_IRQn = 6, // *< DMA Channel 6 Transfer Complete
  106. DMA7_IRQn = 7, // *< DMA Channel 7 Transfer Complete
  107. DMA8_IRQn = 8, // *< DMA Channel 8 Transfer Complete
  108. DMA9_IRQn = 9, // *< DMA Channel 9 Transfer Complete
  109. DMA10_IRQn = 10, // *< DMA Channel 10 Transfer Complete
  110. DMA11_IRQn = 11, // *< DMA Channel 11 Transfer Complete
  111. DMA12_IRQn = 12, // *< DMA Channel 12 Transfer Complete
  112. DMA13_IRQn = 13, // *< DMA Channel 13 Transfer Complete
  113. DMA14_IRQn = 14, // *< DMA Channel 14 Transfer Complete
  114. DMA15_IRQn = 15, // *< DMA Channel 15 Transfer Complete
  115. DMA_Error_IRQn = 16, // *< DMA Error Interrupt
  116. MCM_IRQn = 17, // *< Normal Interrupt
  117. FTF_IRQn = 18, // *< FTFA Command complete interrupt
  118. Read_Collision_IRQn = 19, // *< Read Collision Interrupt
  119. LVD_LVW_IRQn = 20, // *< Low Voltage Detect, Low Voltage Warning
  120. LLW_IRQn = 21, // *< Low Leakage Wakeup
  121. Watchdog_IRQn = 22, // *< WDOG Interrupt
  122. RNG_IRQn = 23, // *< RNG Interrupt
  123. I2C0_IRQn = 24, // *< I2C0 interrupt
  124. I2C1_IRQn = 25, // *< I2C1 interrupt
  125. SPI0_IRQn = 26, // *< SPI0 Interrupt
  126. SPI1_IRQn = 27, // *< SPI1 Interrupt
  127. I2S0_Tx_IRQn = 28, // *< I2S0 transmit interrupt
  128. I2S0_Rx_IRQn = 29, // *< I2S0 receive interrupt
  129. LPUART0_IRQn = 30, // *< LPUART0 status/error interrupt
  130. UART0_RX_TX_IRQn = 31, // *< UART0 Receive/Transmit interrupt
  131. UART0_ERR_IRQn = 32, // *< UART0 Error interrupt
  132. UART1_RX_TX_IRQn = 33, // *< UART1 Receive/Transmit interrupt
  133. UART1_ERR_IRQn = 34, // *< UART1 Error interrupt
  134. UART2_RX_TX_IRQn = 35, // *< UART2 Receive/Transmit interrupt
  135. UART2_ERR_IRQn = 36, // *< UART2 Error interrupt
  136. RESERVED53_IRQn = 37, // *< Reserved interrupt 53
  137. RESERVED54_IRQn = 38, // *< Reserved interrupt 54
  138. ADC0_IRQn = 39, // *< ADC0 interrupt
  139. CMP0_IRQn = 40, // *< CMP0 interrupt
  140. CMP1_IRQn = 41, // *< CMP1 interrupt
  141. FTM0_IRQn = 42, // *< FTM0 fault, overflow and channels interrupt
  142. FTM1_IRQn = 43, // *< FTM1 fault, overflow and channels interrupt
  143. FTM2_IRQn = 44, // *< FTM2 fault, overflow and channels interrupt
  144. RESERVED61_IRQn = 45, // *< Reserved interrupt 61
  145. RTC_IRQn = 46, // *< RTC interrupt
  146. RTC_Seconds_IRQn = 47, // *< RTC seconds interrupt
  147. PIT0_IRQn = 48, // *< PIT timer channel 0 interrupt
  148. PIT1_IRQn = 49, // *< PIT timer channel 1 interrupt
  149. PIT2_IRQn = 50, // *< PIT timer channel 2 interrupt
  150. PIT3_IRQn = 51, // *< PIT timer channel 3 interrupt
  151. PDB0_IRQn = 52, // *< PDB0 Interrupt
  152. USB0_IRQn = 53, // *< USB0 interrupt
  153. RESERVED70_IRQn = 54, // *< Reserved interrupt 70
  154. RESERVED71_IRQn = 55, // *< Reserved interrupt 71
  155. DAC0_IRQn = 56, // *< DAC0 interrupt
  156. MCG_IRQn = 57, // *< MCG Interrupt
  157. LPTimer_IRQn = 58, // *< LPTimer interrupt
  158. PORTA_IRQn = 59, // *< Port A interrupt
  159. PORTB_IRQn = 60, // *< Port B interrupt
  160. PORTC_IRQn = 61, // *< Port C interrupt
  161. PORTD_IRQn = 62, // *< Port D interrupt
  162. PORTE_IRQn = 63, // *< Port E interrupt
  163. SWI_IRQn = 64, // *< Software interrupt
  164. RESERVED81_IRQn = 65, // *< Reserved interrupt 81
  165. RESERVED82_IRQn = 66, // *< Reserved interrupt 82
  166. RESERVED83_IRQn = 67, // *< Reserved interrupt 83
  167. RESERVED84_IRQn = 68, // *< Reserved interrupt 84
  168. RESERVED85_IRQn = 69, // *< Reserved interrupt 85
  169. RESERVED86_IRQn = 70, // *< Reserved interrupt 86
  170. FTM3_IRQn = 71, // *< FTM3 fault, overflow and channels interrupt
  171. DAC1_IRQn = 72, // *< DAC1 interrupt
  172. ADC1_IRQn = 73, // *< ADC1 interrupt
  173. RESERVED90_IRQn = 74, // *< Reserved Interrupt 90
  174. RESERVED91_IRQn = 75, // *< Reserved Interrupt 91
  175. RESERVED92_IRQn = 76, // *< Reserved Interrupt 92
  176. RESERVED93_IRQn = 77, // *< Reserved Interrupt 93
  177. RESERVED94_IRQn = 78, // *< Reserved Interrupt 94
  178. RESERVED95_IRQn = 79, // *< Reserved Interrupt 95
  179. RESERVED96_IRQn = 80, // *< Reserved Interrupt 96
  180. RESERVED97_IRQn = 81, // *< Reserved Interrupt 97
  181. RESERVED98_IRQn = 82, // *< Reserved Interrupt 98
  182. RESERVED99_IRQn = 83, // *< Reserved Interrupt 99
  183. RESERVED100_IRQn = 84, // *< Reserved Interrupt 100
  184. RESERVED101_IRQn = 85 // *< Reserved Interrupt 101
  185. );
  186. TADC_Registers = record
  187. SC1 : array[0..1] of longword; // *< ADC Status and Control Registers 1, array offset: 0x0, array step: 0x4
  188. CFG1 : longword; // *< ADC Configuration Register 1, offset: 0x8
  189. CFG2 : longword; // *< ADC Configuration Register 2, offset: 0xC
  190. R : array[0..1] of longword; // *< ADC Data Result Register, array offset: 0x10, array step: 0x4
  191. CV1 : longword; // *< Compare Value Registers, offset: 0x18
  192. CV2 : longword; // *< Compare Value Registers, offset: 0x1C
  193. SC2 : longword; // *< Status and Control Register 2, offset: 0x20
  194. SC3 : longword; // *< Status and Control Register 3, offset: 0x24
  195. OFS : longword; // *< ADC Offset Correction Register, offset: 0x28
  196. PG : longword; // *< ADC Plus-Side Gain Register, offset: 0x2C
  197. MG : longword; // *< ADC Minus-Side Gain Register, offset: 0x30
  198. CLPD : longword; // *< ADC Plus-Side General Calibration Value Register, offset: 0x34
  199. CLPS : longword; // *< ADC Plus-Side General Calibration Value Register, offset: 0x38
  200. CLP4 : longword; // *< ADC Plus-Side General Calibration Value Register, offset: 0x3C
  201. CLP3 : longword; // *< ADC Plus-Side General Calibration Value Register, offset: 0x40
  202. CLP2 : longword; // *< ADC Plus-Side General Calibration Value Register, offset: 0x44
  203. CLP1 : longword; // *< ADC Plus-Side General Calibration Value Register, offset: 0x48
  204. CLP0 : longword; // *< ADC Plus-Side General Calibration Value Register, offset: 0x4C
  205. RESERVED_0 : array[0..3] of byte;
  206. CLMD : longword; // *< ADC Minus-Side General Calibration Value Register, offset: 0x54
  207. CLMS : longword; // *< ADC Minus-Side General Calibration Value Register, offset: 0x58
  208. CLM4 : longword; // *< ADC Minus-Side General Calibration Value Register, offset: 0x5C
  209. CLM3 : longword; // *< ADC Minus-Side General Calibration Value Register, offset: 0x60
  210. CLM2 : longword; // *< ADC Minus-Side General Calibration Value Register, offset: 0x64
  211. CLM1 : longword; // *< ADC Minus-Side General Calibration Value Register, offset: 0x68
  212. CLM0 : longword; // *< ADC Minus-Side General Calibration Value Register, offset: 0x6C
  213. end;
  214. const
  215. ADC0_BASE = $4003B000;
  216. var
  217. ADC0 : TADC_Registers absolute ADC0_BASE;
  218. const
  219. ADC1_BASE = $40027000;
  220. var
  221. ADC1 : TADC_Registers absolute ADC1_BASE;
  222. type
  223. TCMP_Registers = record
  224. CR0 : byte; // *< CMP Control Register 0, offset: 0x0
  225. CR1 : byte; // *< CMP Control Register 1, offset: 0x1
  226. FPR : byte; // *< CMP Filter Period Register, offset: 0x2
  227. SCR : byte; // *< CMP Status and Control Register, offset: 0x3
  228. DACCR : byte; // *< DAC Control Register, offset: 0x4
  229. MUXCR : byte; // *< MUX Control Register, offset: 0x5
  230. end;
  231. const
  232. CMP0_BASE = $40073000;
  233. var
  234. CMP0 : TCMP_Registers absolute CMP0_BASE;
  235. const
  236. CMP1_BASE = $40073008;
  237. var
  238. CMP1 : TCMP_Registers absolute CMP1_BASE;
  239. type
  240. TCRC_Registers = record
  241. DATA : longword; // *< CRC Data register, offset: 0x0
  242. GPOLY : longword; // *< CRC Polynomial register, offset: 0x4
  243. CTRL : longword; // *< CRC Control register, offset: 0x8
  244. end;
  245. const
  246. CRC_BASE = $40032000;
  247. var
  248. CRC0 : TCRC_Registers absolute CRC_BASE;
  249. type
  250. TDAC_DAT = record
  251. DATL : byte; // *< DAC Data Low Register, array offset: 0x0, array step: 0x2
  252. DATH : byte; // *< DAC Data High Register, array offset: 0x1, array step: 0x2
  253. end;
  254. TDAC_Registers = record
  255. DAT : array[0..15] of TDAC_DAT;
  256. SR : byte; // *< DAC Status Register, offset: 0x20
  257. C0 : byte; // *< DAC Control Register, offset: 0x21
  258. C1 : byte; // *< DAC Control Register 1, offset: 0x22
  259. C2 : byte; // *< DAC Control Register 2, offset: 0x23
  260. end;
  261. const
  262. DAC0_BASE = $4003F000;
  263. var
  264. DAC0 : TDAC_Registers absolute DAC0_BASE;
  265. const
  266. DAC1_BASE = $40028000;
  267. var
  268. DAC1 : TDAC_Registers absolute DAC1_BASE;
  269. type
  270. TDMA_TCD = record
  271. SADDR : longword; // *< TCD Source Address, array offset: 0x1000, array step: 0x20
  272. SOFF : word; // *< TCD Signed Source Address Offset, array offset: 0x1004, array step: 0x20
  273. ATTR : word; // *< TCD Transfer Attributes, array offset: 0x1006, array step: 0x20
  274. NBYTES_MLNO: longword; // *< TCD Minor Byte Count (Minor Loop Disabled), array offset: 0x1008, array step: 0x20
  275. SLAST : longword; // *< TCD Last Source Address Adjustment, array offset: 0x100C, array step: 0x20
  276. DADDR : longword; // *< TCD Destination Address, array offset: 0x1010, array step: 0x20
  277. DOFF : word; // *< TCD Signed Destination Address Offset, array offset: 0x1014, array step: 0x20
  278. CITER_ELINKNO : word; // *< TCD Current Minor Loop Link, Major Loop Count (Channel Linking Disabled), array offset: 0x1016, array step: 0x20
  279. DLAST_SGA : longword; // *< TCD Last Destination Address Adjustment/Scatter Gather Address, array offset: 0x1018, array step: 0x20
  280. CSR : word; // *< TCD Control and Status, array offset: 0x101C, array step: 0x20
  281. BITER_ELINKNO : word; // *< TCD Beginning Minor Loop Link, Major Loop Count (Channel Linking Disabled), array offset: 0x101E, array step: 0x20
  282. end;
  283. TDMA_Registers = record
  284. CR : longword; // *< Control Register, offset: 0x0
  285. ES : longword; // *< Error Status Register, offset: 0x4
  286. RESERVED_0 : array[0..3] of byte;
  287. ERQ : longword; // *< Enable Request Register, offset: 0xC
  288. RESERVED_1 : array[0..3] of byte;
  289. EEI : longword; // *< Enable Error Interrupt Register, offset: 0x14
  290. CEEI : byte; // *< Clear Enable Error Interrupt Register, offset: 0x18
  291. SEEI : byte; // *< Set Enable Error Interrupt Register, offset: 0x19
  292. CERQ : byte; // *< Clear Enable Request Register, offset: 0x1A
  293. SERQ : byte; // *< Set Enable Request Register, offset: 0x1B
  294. CDNE : byte; // *< Clear DONE Status Bit Register, offset: 0x1C
  295. SSRT : byte; // *< Set START Bit Register, offset: 0x1D
  296. CERR : byte; // *< Clear Error Register, offset: 0x1E
  297. CINT : byte; // *< Clear Interrupt Request Register, offset: 0x1F
  298. RESERVED_2 : array[0..3] of byte;
  299. INT : longword; // *< Interrupt Request Register, offset: 0x24
  300. RESERVED_3 : array[0..3] of byte;
  301. ERR : longword; // *< Error Register, offset: 0x2C
  302. RESERVED_4 : array[0..3] of byte;
  303. HRS : longword; // *< Hardware Request Status Register, offset: 0x34
  304. RESERVED_5 : array[0..11] of byte;
  305. EARS : longword; // *< Enable Asynchronous Request in Stop Register, offset: 0x44
  306. RESERVED_6 : array[0..183] of byte;
  307. DCHPRI3 : byte; // *< Channel n Priority Register, offset: 0x100
  308. DCHPRI2 : byte; // *< Channel n Priority Register, offset: 0x101
  309. DCHPRI1 : byte; // *< Channel n Priority Register, offset: 0x102
  310. DCHPRI0 : byte; // *< Channel n Priority Register, offset: 0x103
  311. DCHPRI7 : byte; // *< Channel n Priority Register, offset: 0x104
  312. DCHPRI6 : byte; // *< Channel n Priority Register, offset: 0x105
  313. DCHPRI5 : byte; // *< Channel n Priority Register, offset: 0x106
  314. DCHPRI4 : byte; // *< Channel n Priority Register, offset: 0x107
  315. DCHPRI11 : byte; // *< Channel n Priority Register, offset: 0x108
  316. DCHPRI10 : byte; // *< Channel n Priority Register, offset: 0x109
  317. DCHPRI9 : byte; // *< Channel n Priority Register, offset: 0x10A
  318. DCHPRI8 : byte; // *< Channel n Priority Register, offset: 0x10B
  319. DCHPRI15 : byte; // *< Channel n Priority Register, offset: 0x10C
  320. DCHPRI14 : byte; // *< Channel n Priority Register, offset: 0x10D
  321. DCHPRI13 : byte; // *< Channel n Priority Register, offset: 0x10E
  322. DCHPRI12 : byte; // *< Channel n Priority Register, offset: 0x10F
  323. RESERVED_7 : array[0..3823] of byte;
  324. TCD : array[0..15] of TDMA_TCD;
  325. end;
  326. const
  327. DMA_BASE = $40008000;
  328. var
  329. DMA0 : TDMA_Registers absolute DMA_BASE;
  330. type
  331. TDMAMUX_Registers = record
  332. CHCFG : array[0..15] of byte; // *< Channel Configuration register, array offset: 0x0, array step: 0x1
  333. end;
  334. const
  335. DMAMUX_BASE = $40021000;
  336. var
  337. DMAMUX : TDMAMUX_Registers absolute DMAMUX_BASE;
  338. type
  339. TEWM_Registers = record
  340. CTRL : byte; // *< Control Register, offset: 0x0
  341. SERV : byte; // *< Service Register, offset: 0x1
  342. CMPL : byte; // *< Compare Low Register, offset: 0x2
  343. CMPH : byte; // *< Compare High Register, offset: 0x3
  344. RESERVED_0 : array[0..0] of byte;
  345. CLKPRESCALER : byte; // *< Clock Prescaler Register, offset: 0x5
  346. end;
  347. const
  348. EWM_BASE = $40061000;
  349. var
  350. EWM : TEWM_Registers absolute EWM_BASE;
  351. type
  352. TFB_CS = record
  353. CSAR : longword; // *< Chip Select Address Register, array offset: 0x0, array step: 0xC
  354. CSMR : longword; // *< Chip Select Mask Register, array offset: 0x4, array step: 0xC
  355. CSCR : longword; // *< Chip Select Control Register, array offset: 0x8, array step: 0xC
  356. end;
  357. TFB_Registers = record
  358. CS : array[0..5] of TFB_CS;
  359. RESERVED_0 : array[0..23] of byte;
  360. CSPMCR : longword; // *< Chip Select port Multiplexing Control Register, offset: 0x60
  361. end;
  362. const
  363. FB_BASE = $4000C000;
  364. var
  365. FB : TFB_Registers absolute FB_BASE;
  366. type
  367. TFMC_SET = record
  368. DATA_U : longword; // *< Cache Data Storage (upper word), array offset: 0x200, array step: index*0x40, index2*0x8
  369. DATA_L : longword; // *< Cache Data Storage (lower word), array offset: 0x204, array step: index*0x40, index2*0x8
  370. end;
  371. TFMC_Registers = record
  372. PFAPR : longword; // *< Flash Access Protection Register, offset: 0x0
  373. PFB0CR : longword; // *< Flash Bank 0 Control Register, offset: 0x4
  374. PFB1CR : longword; // *< Flash Bank 1 Control Register, offset: 0x8
  375. RESERVED_0 : array[0..243] of byte;
  376. TAGVDW0S : array[0..7] of longword; // *< Cache Tag Storage, array offset: 0x100, array step: 0x4
  377. TAGVDW1S : array[0..7] of longword; // *< Cache Tag Storage, array offset: 0x120, array step: 0x4
  378. TAGVDW2S : array[0..7] of longword; // *< Cache Tag Storage, array offset: 0x140, array step: 0x4
  379. TAGVDW3S : array[0..7] of longword; // *< Cache Tag Storage, array offset: 0x160, array step: 0x4
  380. RESERVED_1 : array[0..127] of byte;
  381. &SET : array[0..3] of TFMC_SET;
  382. end;
  383. const
  384. FMC_BASE = $4001F000;
  385. var
  386. FMC : TFMC_Registers absolute FMC_BASE;
  387. type
  388. TFTFA_Registers = record
  389. FSTAT : byte; // *< Flash Status Register, offset: 0x0
  390. FCNFG : byte; // *< Flash Configuration Register, offset: 0x1
  391. FSEC : byte; // *< Flash Security Register, offset: 0x2
  392. FOPT : byte; // *< Flash Option Register, offset: 0x3
  393. FCCOB3 : byte; // *< Flash Common Command Object Registers, offset: 0x4
  394. FCCOB2 : byte; // *< Flash Common Command Object Registers, offset: 0x5
  395. FCCOB1 : byte; // *< Flash Common Command Object Registers, offset: 0x6
  396. FCCOB0 : byte; // *< Flash Common Command Object Registers, offset: 0x7
  397. FCCOB7 : byte; // *< Flash Common Command Object Registers, offset: 0x8
  398. FCCOB6 : byte; // *< Flash Common Command Object Registers, offset: 0x9
  399. FCCOB5 : byte; // *< Flash Common Command Object Registers, offset: 0xA
  400. FCCOB4 : byte; // *< Flash Common Command Object Registers, offset: 0xB
  401. FCCOBB : byte; // *< Flash Common Command Object Registers, offset: 0xC
  402. FCCOBA : byte; // *< Flash Common Command Object Registers, offset: 0xD
  403. FCCOB9 : byte; // *< Flash Common Command Object Registers, offset: 0xE
  404. FCCOB8 : byte; // *< Flash Common Command Object Registers, offset: 0xF
  405. FPROT3 : byte; // *< Program Flash Protection Registers, offset: 0x10
  406. FPROT2 : byte; // *< Program Flash Protection Registers, offset: 0x11
  407. FPROT1 : byte; // *< Program Flash Protection Registers, offset: 0x12
  408. FPROT0 : byte; // *< Program Flash Protection Registers, offset: 0x13
  409. RESERVED_0 : array[0..3] of byte;
  410. XACCH3 : byte; // *< Execute-only Access Registers, offset: 0x18
  411. XACCH2 : byte; // *< Execute-only Access Registers, offset: 0x19
  412. XACCH1 : byte; // *< Execute-only Access Registers, offset: 0x1A
  413. XACCH0 : byte; // *< Execute-only Access Registers, offset: 0x1B
  414. XACCL3 : byte; // *< Execute-only Access Registers, offset: 0x1C
  415. XACCL2 : byte; // *< Execute-only Access Registers, offset: 0x1D
  416. XACCL1 : byte; // *< Execute-only Access Registers, offset: 0x1E
  417. XACCL0 : byte; // *< Execute-only Access Registers, offset: 0x1F
  418. SACCH3 : byte; // *< Supervisor-only Access Registers, offset: 0x20
  419. SACCH2 : byte; // *< Supervisor-only Access Registers, offset: 0x21
  420. SACCH1 : byte; // *< Supervisor-only Access Registers, offset: 0x22
  421. SACCH0 : byte; // *< Supervisor-only Access Registers, offset: 0x23
  422. SACCL3 : byte; // *< Supervisor-only Access Registers, offset: 0x24
  423. SACCL2 : byte; // *< Supervisor-only Access Registers, offset: 0x25
  424. SACCL1 : byte; // *< Supervisor-only Access Registers, offset: 0x26
  425. SACCL0 : byte; // *< Supervisor-only Access Registers, offset: 0x27
  426. FACSS : byte; // *< Flash Access Segment Size Register, offset: 0x28
  427. RESERVED_1 : array[0..1] of byte;
  428. FACSN : byte; // *< Flash Access Segment Number Register, offset: 0x2B
  429. end;
  430. const
  431. FTFA_BASE = $40020000;
  432. var
  433. FTFA : TFTFA_Registers absolute FTFA_BASE;
  434. type
  435. TFMT_CONTROLS = record
  436. CnSC : longword; // *< Channel (n) Status And Control, array offset: 0xC, array step: 0x8
  437. CnV : longword; // *< Channel (n) Value, array offset: 0x10, array step: 0x8
  438. end;
  439. TFTM_Registers = record
  440. SC : longword; // *< Status And Control, offset: 0x0
  441. CNT : longword; // *< Counter, offset: 0x4
  442. &MOD : longword; // *< Modulo, offset: 0x8
  443. CONTROLS : array[0..7] of TFMT_CONTROLS;
  444. CNTIN : longword; // *< Counter Initial Value, offset: 0x4C
  445. STATUS : longword; // *< Capture And Compare Status, offset: 0x50
  446. MODE : longword; // *< Features Mode Selection, offset: 0x54
  447. SYNC : longword; // *< Synchronization, offset: 0x58
  448. OUTINIT : longword; // *< Initial State For Channels Output, offset: 0x5C
  449. OUTMASK : longword; // *< Output Mask, offset: 0x60
  450. COMBINE : longword; // *< Function For Linked Channels, offset: 0x64
  451. DEADTIME : longword; // *< Deadtime Insertion Control, offset: 0x68
  452. EXTTRIG : longword; // *< FTM External Trigger, offset: 0x6C
  453. POL : longword; // *< Channels Polarity, offset: 0x70
  454. FMS : longword; // *< Fault Mode Status, offset: 0x74
  455. FILTER : longword; // *< Input Capture Filter Control, offset: 0x78
  456. FLTCTRL : longword; // *< Fault Control, offset: 0x7C
  457. QDCTRL : longword; // *< Quadrature Decoder Control And Status, offset: 0x80
  458. CONF : longword; // *< Configuration, offset: 0x84
  459. FLTPOL : longword; // *< FTM Fault Input Polarity, offset: 0x88
  460. SYNCONF : longword; // *< Synchronization Configuration, offset: 0x8C
  461. INVCTRL : longword; // *< FTM Inverting Control, offset: 0x90
  462. SWOCTRL : longword; // *< FTM Software Output Control, offset: 0x94
  463. PWMLOAD : longword; // *< FTM PWM Load, offset: 0x98
  464. end;
  465. const
  466. FTM0_BASE = $40038000;
  467. var
  468. FTM0 : TFTM_Registers absolute FTM0_BASE;
  469. const
  470. FTM1_BASE = $40039000;
  471. var
  472. FTM1 : TFTM_Registers absolute FTM1_BASE;
  473. const
  474. FTM2_BASE = $4003A000;
  475. var
  476. FTM2 : TFTM_Registers absolute FTM2_BASE;
  477. const
  478. FTM3_BASE = $40026000;
  479. var
  480. FTM3 : TFTM_Registers absolute FTM3_BASE;
  481. type
  482. TGPIO_Registers = record
  483. PDOR : longword; // *< Port Data Output Register, offset: 0x0
  484. PSOR : longword; // *< Port Set Output Register, offset: 0x4
  485. PCOR : longword; // *< Port Clear Output Register, offset: 0x8
  486. PTOR : longword; // *< Port Toggle Output Register, offset: 0xC
  487. PDIR : longword; // *< Port Data Input Register, offset: 0x10
  488. PDDR : longword; // *< Port Data Direction Register, offset: 0x14
  489. end;
  490. const
  491. PTA_BASE = $400FF000;
  492. var
  493. PTA : TGPIO_Registers absolute PTA_BASE;
  494. const
  495. PTB_BASE = $400FF040;
  496. var
  497. PTB : TGPIO_Registers absolute PTB_BASE;
  498. const
  499. PTC_BASE = $400FF080;
  500. var
  501. PTC : TGPIO_Registers absolute PTC_BASE;
  502. const
  503. PTD_BASE = $400FF0C0;
  504. var
  505. PTD : TGPIO_Registers absolute PTD_BASE;
  506. const
  507. PTE_BASE = $400FF100;
  508. var
  509. PTE : TGPIO_Registers absolute PTE_BASE;
  510. type
  511. TI2C_Registers = record
  512. A1 : byte; // *< I2C Address Register 1, offset: 0x0
  513. F : byte; // *< I2C Frequency Divider register, offset: 0x1
  514. C1 : byte; // *< I2C Control Register 1, offset: 0x2
  515. S : byte; // *< I2C Status register, offset: 0x3
  516. D : byte; // *< I2C Data I/O register, offset: 0x4
  517. C2 : byte; // *< I2C Control Register 2, offset: 0x5
  518. FLT : byte; // *< I2C Programmable Input Glitch Filter register, offset: 0x6
  519. RA : byte; // *< I2C Range Address register, offset: 0x7
  520. SMB : byte; // *< I2C SMBus Control and Status register, offset: 0x8
  521. A2 : byte; // *< I2C Address Register 2, offset: 0x9
  522. SLTH : byte; // *< I2C SCL Low Timeout Register High, offset: 0xA
  523. SLTL : byte; // *< I2C SCL Low Timeout Register Low, offset: 0xB
  524. end;
  525. const
  526. I2C0_BASE = $40066000;
  527. var
  528. I2C0 : TI2C_Registers absolute I2C0_BASE;
  529. const
  530. I2C1_BASE = $40067000;
  531. var
  532. I2C1 : TI2C_Registers absolute I2C1_BASE;
  533. type
  534. TI2S_Registers = record
  535. TCSR : longword; // *< SAI Transmit Control Register, offset: 0x0
  536. TCR1 : longword; // *< SAI Transmit Configuration 1 Register, offset: 0x4
  537. TCR2 : longword; // *< SAI Transmit Configuration 2 Register, offset: 0x8
  538. TCR3 : longword; // *< SAI Transmit Configuration 3 Register, offset: 0xC
  539. TCR4 : longword; // *< SAI Transmit Configuration 4 Register, offset: 0x10
  540. TCR5 : longword; // *< SAI Transmit Configuration 5 Register, offset: 0x14
  541. RESERVED_0 : array[0..7] of byte;
  542. TDR : longWord; // *< SAI Transmit Data Register, array offset: 0x20, array step: 0x4
  543. RESERVED_1 : array[0..27] of byte;
  544. TFR : longWord; // *< SAI Transmit FIFO Register, array offset: 0x40, array step: 0x4
  545. RESERVED_2 : array[0..27] of byte;
  546. TMR : longword; // *< SAI Transmit Mask Register, offset: 0x60
  547. RESERVED_3 : array[0..27] of byte;
  548. RCSR : longword; // *< SAI Receive Control Register, offset: 0x80
  549. RCR1 : longword; // *< SAI Receive Configuration 1 Register, offset: 0x84
  550. RCR2 : longword; // *< SAI Receive Configuration 2 Register, offset: 0x88
  551. RCR3 : longword; // *< SAI Receive Configuration 3 Register, offset: 0x8C
  552. RCR4 : longword; // *< SAI Receive Configuration 4 Register, offset: 0x90
  553. RCR5 : longword; // *< SAI Receive Configuration 5 Register, offset: 0x94
  554. RESERVED_4 : array[0..7] of byte;
  555. RDR : longWord; // *< SAI Receive Data Register, array offset: 0xA0, array step: 0x4
  556. RESERVED_5 : array[0..27] of byte;
  557. RFR : longWord; // *< SAI Receive FIFO Register, array offset: 0xC0, array step: 0x4
  558. RESERVED_6 : array[0..27] of byte;
  559. RMR : longword; // *< SAI Receive Mask Register, offset: 0xE0
  560. RESERVED_7 : array[0..27] of byte;
  561. MCR : longword; // *< SAI MCLK Control Register, offset: 0x100
  562. MDR : longword; // *< SAI MCLK Divide Register, offset: 0x104
  563. end;
  564. const
  565. I2S0_BASE = $4002F000;
  566. var
  567. I2S0 : TI2S_Registers absolute I2S0_BASE;
  568. type
  569. TLLWU_Registers = record
  570. PE1 : byte; // *< LLWU Pin Enable 1 register, offset: 0x0
  571. PE2 : byte; // *< LLWU Pin Enable 2 register, offset: 0x1
  572. PE3 : byte; // *< LLWU Pin Enable 3 register, offset: 0x2
  573. PE4 : byte; // *< LLWU Pin Enable 4 register, offset: 0x3
  574. ME : byte; // *< LLWU Module Enable register, offset: 0x4
  575. F1 : byte; // *< LLWU Flag 1 register, offset: 0x5
  576. F2 : byte; // *< LLWU Flag 2 register, offset: 0x6
  577. F3 : byte; // *< LLWU Flag 3 register, offset: 0x7
  578. FILT1 : byte; // *< LLWU Pin Filter 1 register, offset: 0x8
  579. FILT2 : byte; // *< LLWU Pin Filter 2 register, offset: 0x9
  580. end;
  581. const
  582. LLWU_BASE = $4007C000;
  583. var
  584. LLWU : TLLWU_Registers absolute LLWU_BASE;
  585. type
  586. TLPTMR_Registers = record
  587. CSR : longword; // *< Low Power Timer Control Status Register, offset: 0x0
  588. PSR : longword; // *< Low Power Timer Prescale Register, offset: 0x4
  589. CMR : longword; // *< Low Power Timer Compare Register, offset: 0x8
  590. CNR : longword; // *< Low Power Timer Counter Register, offset: 0xC
  591. end;
  592. const
  593. LPTMR0_BASE = $40040000;
  594. var
  595. LPTMR0 : TLPTMR_Registers absolute LPTMR0_BASE;
  596. type
  597. TLPUART_Registers = record
  598. BAUD : longword; // *< LPUART Baud Rate Register, offset: 0x0
  599. STAT : longword; // *< LPUART Status Register, offset: 0x4
  600. CTRL : longword; // *< LPUART Control Register, offset: 0x8
  601. DATA : longword; // *< LPUART Data Register, offset: 0xC
  602. MATCH : longword; // *< LPUART Match Address Register, offset: 0x10
  603. MODIR : longword; // *< LPUART Modem IrDA Register, offset: 0x14
  604. end;
  605. const
  606. LPUART0_BASE = $4002A000;
  607. var
  608. LPUART0 : TLPUART_Registers absolute LPUART0_BASE;
  609. type
  610. TMCG_Registers = record
  611. C1 : byte; // *< MCG Control 1 Register, offset: 0x0
  612. C2 : byte; // *< MCG Control 2 Register, offset: 0x1
  613. C3 : byte; // *< MCG Control 3 Register, offset: 0x2
  614. C4 : byte; // *< MCG Control 4 Register, offset: 0x3
  615. C5 : byte; // *< MCG Control 5 Register, offset: 0x4
  616. C6 : byte; // *< MCG Control 6 Register, offset: 0x5
  617. S : byte; // *< MCG Status Register, offset: 0x6
  618. RESERVED_0 : array[0..0] of byte;
  619. SC : byte; // *< MCG Status and Control Register, offset: 0x8
  620. RESERVED_1 : array[0..0] of byte;
  621. ATCVH : byte; // *< MCG Auto Trim Compare Value High Register, offset: 0xA
  622. ATCVL : byte; // *< MCG Auto Trim Compare Value Low Register, offset: 0xB
  623. C7 : byte; // *< MCG Control 7 Register, offset: 0xC
  624. C8 : byte; // *< MCG Control 8 Register, offset: 0xD
  625. end;
  626. const
  627. MCG_BASE = $40064000;
  628. var
  629. MCG : TMCG_Registers absolute MCG_BASE;
  630. type
  631. TMCM_Registers = record
  632. RESERVED_0 : array[0..7] of byte;
  633. PLASC : word; // *< Crossbar Switch (AXBS) Slave Configuration, offset: 0x8
  634. PLAMC : word; // *< Crossbar Switch (AXBS) Master Configuration, offset: 0xA
  635. PLACR : longword; // *< Crossbar Switch (AXBS) Control Register, offset: 0xC
  636. ISR : longword; // *< Interrupt Status and Control Register, offset: 0x10
  637. RESERVED_1 : array[0..43] of byte;
  638. CPO : longword; // *< Compute Operation Control Register, offset: 0x40
  639. end;
  640. const
  641. MCM_BASE = $E0080000;
  642. var
  643. MCM : TMCM_Registers absolute MCM_BASE;
  644. type
  645. TNV_Registers = record
  646. BACKKEY3 : byte; // *< Backdoor Comparison Key 3., offset: 0x0
  647. BACKKEY2 : byte; // *< Backdoor Comparison Key 2., offset: 0x1
  648. BACKKEY1 : byte; // *< Backdoor Comparison Key 1., offset: 0x2
  649. BACKKEY0 : byte; // *< Backdoor Comparison Key 0., offset: 0x3
  650. BACKKEY7 : byte; // *< Backdoor Comparison Key 7., offset: 0x4
  651. BACKKEY6 : byte; // *< Backdoor Comparison Key 6., offset: 0x5
  652. BACKKEY5 : byte; // *< Backdoor Comparison Key 5., offset: 0x6
  653. BACKKEY4 : byte; // *< Backdoor Comparison Key 4., offset: 0x7
  654. FPROT3 : byte; // *< Non-volatile P-Flash Protection 1 - Low Register, offset: 0x8
  655. FPROT2 : byte; // *< Non-volatile P-Flash Protection 1 - High Register, offset: 0x9
  656. FPROT1 : byte; // *< Non-volatile P-Flash Protection 0 - Low Register, offset: 0xA
  657. FPROT0 : byte; // *< Non-volatile P-Flash Protection 0 - High Register, offset: 0xB
  658. FSEC : byte; // *< Non-volatile Flash Security Register, offset: 0xC
  659. FOPT : byte; // *< Non-volatile Flash Option Register, offset: 0xD
  660. end;
  661. const
  662. FTFA_FlashConfig_BASE = $400;
  663. var
  664. FTFA_FlashConfig : TNV_Registers absolute FTFA_FlashConfig_BASE;
  665. type
  666. TOSC_Registers = record
  667. CR : byte; // *< OSC Control Register, offset: 0x0
  668. RESERVED_0 : array[0..0] of byte;
  669. &DIV : byte; // *< OSC_DIV, offset: 0x2
  670. end;
  671. const
  672. OSC_BASE = $40065000;
  673. var
  674. OSC : TOSC_Registers absolute OSC_BASE;
  675. type
  676. TPDB_CH = record
  677. C1 : longword; // *< Channel n Control register 1, array offset: 0x10, array step: 0x28
  678. S : longword; // *< Channel n Status register, array offset: 0x14, array step: 0x28
  679. DLY : array[0..1] of longword; // *< Channel n Delay 0 register..Channel n Delay 1 register, array offset: 0x18, array step: index*0x28, index2*0x4
  680. RESERVED_0 : array[0..23] of byte;
  681. end;
  682. TPDB_DAC = record
  683. INTC : longword; // *< DAC Interval Trigger n Control register, array offset: 0x150, array step: 0x8
  684. INT : longword; // *< DAC Interval n register, array offset: 0x154, array step: 0x8
  685. end;
  686. TPDB_Registers = record
  687. SC : longword; // *< Status and Control register, offset: 0x0
  688. &MOD : longword; // *< Modulus register, offset: 0x4
  689. CNT : longword; // *< Counter register, offset: 0x8
  690. IDLY : longword; // *< Interrupt Delay register, offset: 0xC
  691. CH : array[0..1] of TPDB_CH;
  692. RESERVED_0 : array[0..239] of byte;
  693. DAC : array[0..1] of TPDB_DAC;
  694. RESERVED_1 : array[0..47] of byte;
  695. POEN : longword; // *< Pulse-Out n Enable register, offset: 0x190
  696. PODLY : array[0..1] of longword; // *< Pulse-Out n Delay register, array offset: 0x194, array step: 0x4
  697. end;
  698. const
  699. PDB0_BASE = $40036000;
  700. var
  701. PDB0 : TPDB_Registers absolute PDB0_BASE;
  702. type
  703. TPIT_CHANNEL = record
  704. LDVAL : longword; // *< Timer Load Value Register, array offset: 0x100, array step: 0x10
  705. CVAL : longword; // *< Current Timer Value Register, array offset: 0x104, array step: 0x10
  706. TCTRL : longword; // *< Timer Control Register, array offset: 0x108, array step: 0x10
  707. TFLG : longword; // *< Timer Flag Register, array offset: 0x10C, array step: 0x10
  708. end;
  709. TPIT_Registers = record
  710. MCR : longword; // *< PIT Module Control Register, offset: 0x0
  711. RESERVED_0 : array[0..251] of byte;
  712. CHANNEL : array[0..3] of TPIT_CHANNEL;
  713. end;
  714. const
  715. PIT_BASE = $40037000;
  716. var
  717. PIT : TPIT_Registers absolute PIT_BASE;
  718. type
  719. TPMC_Registers = record
  720. LVDSC1 : byte; // *< Low Voltage Detect Status And Control 1 register, offset: 0x0
  721. LVDSC2 : byte; // *< Low Voltage Detect Status And Control 2 register, offset: 0x1
  722. REGSC : byte; // *< Regulator Status And Control register, offset: 0x2
  723. end;
  724. const
  725. PMC_BASE = $4007D000;
  726. var
  727. PMC : TPMC_Registers absolute PMC_BASE;
  728. type
  729. TPORT_Registers = record
  730. PCR : array[0..31] of longword; // *< Pin Control Register n, array offset: 0x0, array step: 0x4
  731. GPCLR : longword; // *< Global Pin Control Low Register, offset: 0x80
  732. GPCHR : longword; // *< Global Pin Control High Register, offset: 0x84
  733. RESERVED_0 : array[0..23] of byte;
  734. ISFR : longword; // *< Interrupt Status Flag Register, offset: 0xA0
  735. RESERVED_1 : array[0..27] of byte;
  736. DFER : longword; // *< Digital Filter Enable Register, offset: 0xC0
  737. DFCR : longword; // *< Digital Filter Clock Register, offset: 0xC4
  738. DFWR : longword; // *< Digital Filter Width Register, offset: 0xC8
  739. end;
  740. const
  741. PORTA_BASE = $40049000;
  742. var
  743. PORTA : TPORT_Registers absolute PORTA_BASE;
  744. const
  745. PORTB_BASE = $4004A000;
  746. var
  747. PORTB : TPORT_Registers absolute PORTB_BASE;
  748. const
  749. PORTC_BASE = $4004B000;
  750. var
  751. PORTC : TPORT_Registers absolute PORTC_BASE;
  752. const
  753. PORTD_BASE = $4004C000;
  754. var
  755. PORTD : TPORT_Registers absolute PORTD_BASE;
  756. const
  757. PORTE_BASE = $4004D000;
  758. var
  759. PORTE : TPORT_Registers absolute PORTE_BASE;
  760. type
  761. TRCM_Registers = record
  762. SRS0 : byte; // *< System Reset Status Register 0, offset: 0x0
  763. SRS1 : byte; // *< System Reset Status Register 1, offset: 0x1
  764. RESERVED_0 : array[0..1] of byte;
  765. RPFC : byte; // *< Reset Pin Filter Control register, offset: 0x4
  766. RPFW : byte; // *< Reset Pin Filter Width register, offset: 0x5
  767. RESERVED_1 : array[0..0] of byte;
  768. MR : byte; // *< Mode Register, offset: 0x7
  769. SSRS0 : byte; // *< Sticky System Reset Status Register 0, offset: 0x8
  770. SSRS1 : byte; // *< Sticky System Reset Status Register 1, offset: 0x9
  771. end;
  772. const
  773. RCM_BASE = $4007F000;
  774. var
  775. RCM : TRCM_Registers absolute RCM_BASE;
  776. type
  777. TRFSYS_Registers = record
  778. REG : array[0..7] of longword; // *< Register file register, array offset: 0x0, array step: 0x4
  779. end;
  780. const
  781. RFSYS_BASE = $40041000;
  782. var
  783. RFSYS : TRFSYS_Registers absolute RFSYS_BASE;
  784. type
  785. TRFVBAT_Registers = record
  786. REG : array[0..7] of longword; // *< VBAT register file register, array offset: 0x0, array step: 0x4
  787. end;
  788. const
  789. RFVBAT_BASE = $4003E000;
  790. var
  791. RFVBAT : TRFVBAT_Registers absolute RFVBAT_BASE;
  792. type
  793. TRNG_Registers = record
  794. CR : longword; // *< RNGA Control Register, offset: 0x0
  795. SR : longword; // *< RNGA Status Register, offset: 0x4
  796. ER : longword; // *< RNGA Entropy Register, offset: 0x8
  797. &OR : longword; // *< RNGA Output Register, offset: 0xC
  798. end;
  799. const
  800. RNG_BASE = $40029000;
  801. var
  802. RNG : TRNG_Registers absolute RNG_BASE;
  803. type
  804. TRTC_Registers = record
  805. TSR : longword; // *< RTC Time Seconds Register, offset: 0x0
  806. TPR : longword; // *< RTC Time Prescaler Register, offset: 0x4
  807. TAR : longword; // *< RTC Time Alarm Register, offset: 0x8
  808. TCR : longword; // *< RTC Time Compensation Register, offset: 0xC
  809. CR : longword; // *< RTC Control Register, offset: 0x10
  810. SR : longword; // *< RTC Status Register, offset: 0x14
  811. LR : longword; // *< RTC Lock Register, offset: 0x18
  812. IER : longword; // *< RTC Interrupt Enable Register, offset: 0x1C
  813. RESERVED_0 : array[0..2015] of byte;
  814. WAR : longword; // *< RTC Write Access Register, offset: 0x800
  815. RAR : longword; // *< RTC Read Access Register, offset: 0x804
  816. end;
  817. const
  818. RTC_BASE = $4003D000;
  819. var
  820. RTC : TRTC_Registers absolute RTC_BASE;
  821. type
  822. TSIM_Registers = record
  823. SOPT1 : longword; // *< System Options Register 1, offset: 0x0
  824. SOPT1CFG : longword; // *< SOPT1 Configuration Register, offset: 0x4
  825. RESERVED_0 : array[0..4091] of byte;
  826. SOPT2 : longword; // *< System Options Register 2, offset: 0x1004
  827. RESERVED_1 : array[0..3] of byte;
  828. SOPT4 : longword; // *< System Options Register 4, offset: 0x100C
  829. SOPT5 : longword; // *< System Options Register 5, offset: 0x1010
  830. RESERVED_2 : array[0..3] of byte;
  831. SOPT7 : longword; // *< System Options Register 7, offset: 0x1018
  832. SOPT8 : longword; // *< System Options Register 8, offset: 0x101C
  833. RESERVED_3 : array[0..3] of byte;
  834. SDID : longword; // *< System Device Identification Register, offset: 0x1024
  835. RESERVED_4 : array[0..11] of byte;
  836. SCGC4 : longword; // *< System Clock Gating Control Register 4, offset: 0x1034
  837. SCGC5 : longword; // *< System Clock Gating Control Register 5, offset: 0x1038
  838. SCGC6 : longword; // *< System Clock Gating Control Register 6, offset: 0x103C
  839. SCGC7 : longword; // *< System Clock Gating Control Register 7, offset: 0x1040
  840. CLKDIV1 : longword; // *< System Clock Divider Register 1, offset: 0x1044
  841. CLKDIV2 : longword; // *< System Clock Divider Register 2, offset: 0x1048
  842. FCFG1 : longword; // *< Flash Configuration Register 1, offset: 0x104C
  843. FCFG2 : longword; // *< Flash Configuration Register 2, offset: 0x1050
  844. UIDH : longword; // *< Unique Identification Register High, offset: 0x1054
  845. UIDMH : longword; // *< Unique Identification Register Mid-High, offset: 0x1058
  846. UIDML : longword; // *< Unique Identification Register Mid Low, offset: 0x105C
  847. UIDL : longword; // *< Unique Identification Register Low, offset: 0x1060
  848. end;
  849. const
  850. SIM_BASE = $40047000;
  851. var
  852. SIM : TSIM_Registers absolute SIM_BASE;
  853. type
  854. TSMC_Registers = record
  855. PMPROT : byte; // *< Power Mode Protection register, offset: 0x0
  856. PMCTRL : byte; // *< Power Mode Control register, offset: 0x1
  857. STOPCTRL : byte; // *< Stop Control Register, offset: 0x2
  858. PMSTAT : byte; // *< Power Mode Status register, offset: 0x3
  859. end;
  860. const
  861. SMC_BASE = $4007E000;
  862. var
  863. SMC : TSMC_Registers absolute SMC_BASE;
  864. type
  865. TSPI_Registers = record
  866. MCR : longword; // *< Module Configuration Register, offset: 0x0
  867. RESERVED_0 : array[0..3] of byte;
  868. TCR : longword; // *< Transfer Count Register, offset: 0x8
  869. CTAR : array[0..1] of longword; // *< Clock and Transfer Attributes Register (In Master Mode), array offset: 0xC, array step: 0x4
  870. RESERVED_1 : array[0..23] of byte;
  871. SR : longword; // *< Status Register, offset: 0x2C
  872. RSER : longword; // *< DMA/Interrupt Request Select and Enable Register, offset: 0x30
  873. PUSHR : longword; // *< PUSH TX FIFO Register In Master Mode, offset: 0x34
  874. POPR : longword; // *< POP RX FIFO Register, offset: 0x38
  875. TXFR0 : longword; // *< Transmit FIFO Registers, offset: 0x3C
  876. TXFR1 : longword; // *< Transmit FIFO Registers, offset: 0x40
  877. TXFR2 : longword; // *< Transmit FIFO Registers, offset: 0x44
  878. TXFR3 : longword; // *< Transmit FIFO Registers, offset: 0x48
  879. RESERVED_2 : array[0..47] of byte;
  880. RXFR0 : longword; // *< Receive FIFO Registers, offset: 0x7C
  881. RXFR1 : longword; // *< Receive FIFO Registers, offset: 0x80
  882. RXFR2 : longword; // *< Receive FIFO Registers, offset: 0x84
  883. RXFR3 : longword; // *< Receive FIFO Registers, offset: 0x88
  884. end;
  885. const
  886. SPI0_BASE = $4002C000;
  887. var
  888. SPI0 : TSPI_Registers absolute SPI0_BASE;
  889. const
  890. SPI1_BASE = $4002D000;
  891. var
  892. SPI1 : TSPI_Registers absolute SPI1_BASE;
  893. type
  894. TUART_Registers = record
  895. BDH : byte; // *< UART Baud Rate Registers: High, offset: 0x0
  896. BDL : byte; // *< UART Baud Rate Registers: Low, offset: 0x1
  897. C1 : byte; // *< UART Control Register 1, offset: 0x2
  898. C2 : byte; // *< UART Control Register 2, offset: 0x3
  899. S1 : byte; // *< UART Status Register 1, offset: 0x4
  900. S2 : byte; // *< UART Status Register 2, offset: 0x5
  901. C3 : byte; // *< UART Control Register 3, offset: 0x6
  902. D : byte; // *< UART Data Register, offset: 0x7
  903. MA1 : byte; // *< UART Match Address Registers 1, offset: 0x8
  904. MA2 : byte; // *< UART Match Address Registers 2, offset: 0x9
  905. C4 : byte; // *< UART Control Register 4, offset: 0xA
  906. C5 : byte; // *< UART Control Register 5, offset: 0xB
  907. ED : byte; // *< UART Extended Data Register, offset: 0xC
  908. MODEM : byte; // *< UART Modem Register, offset: 0xD
  909. IR : byte; // *< UART Infrared Register, offset: 0xE
  910. RESERVED_0 : array[0..0] of byte;
  911. PFIFO : byte; // *< UART FIFO Parameters, offset: 0x10
  912. CFIFO : byte; // *< UART FIFO Control Register, offset: 0x11
  913. SFIFO : byte; // *< UART FIFO Status Register, offset: 0x12
  914. TWFIFO : byte; // *< UART FIFO Transmit Watermark, offset: 0x13
  915. TCFIFO : byte; // *< UART FIFO Transmit Count, offset: 0x14
  916. RWFIFO : byte; // *< UART FIFO Receive Watermark, offset: 0x15
  917. RCFIFO : byte; // *< UART FIFO Receive Count, offset: 0x16
  918. RESERVED_1 : array[0..0] of byte;
  919. C7816 : byte; // *< UART 7816 Control Register, offset: 0x18
  920. IE7816 : byte; // *< UART 7816 Interrupt Enable Register, offset: 0x19
  921. IS7816 : byte; // *< UART 7816 Interrupt Status Register, offset: 0x1A
  922. WP7816 : byte; // *< UART 7816 Wait Parameter Register, offset: 0x1B
  923. WN7816 : byte; // *< UART 7816 Wait N Register, offset: 0x1C
  924. WF7816 : byte; // *< UART 7816 Wait FD Register, offset: 0x1D
  925. ET7816 : byte; // *< UART 7816 Error Threshold Register, offset: 0x1E
  926. TL7816 : byte; // *< UART 7816 Transmit Length Register, offset: 0x1F
  927. RESERVED_2 : array[0..25] of byte;
  928. AP7816A_T0 : byte; // *< UART 7816 ATR Duration Timer Register A, offset: 0x3A
  929. AP7816B_T0 : byte; // *< UART 7816 ATR Duration Timer Register B, offset: 0x3B
  930. WP7816A_T0 : byte; // *< UART 7816 Wait Parameter Register A, offset: 0x3C
  931. WP7816B_T0 : byte; // *< UART 7816 Wait Parameter Register B, offset: 0x3D
  932. WGP7816_T1 : byte; // *< UART 7816 Wait and Guard Parameter Register, offset: 0x3E
  933. WP7816C_T1 : byte; // *< UART 7816 Wait Parameter Register C, offset: 0x3F
  934. end;
  935. const
  936. UART0_BASE = $4006A000;
  937. var
  938. UART0 : TUART_Registers absolute UART0_BASE;
  939. const
  940. UART1_BASE = $4006B000;
  941. var
  942. UART1 : TUART_Registers absolute UART1_BASE;
  943. const
  944. UART2_BASE = $4006C000;
  945. var
  946. UART2 : TUART_Registers absolute UART2_BASE;
  947. type
  948. TUSB_ENDPOINT= record
  949. ENDPT : byte; // *< Endpoint Control register, array offset: 0xC0, array step: 0x4
  950. RESERVED_0 : array[0..2] of byte;
  951. end;
  952. TUSB_Registers = record
  953. PERID : byte; // *< Peripheral ID register, offset: 0x0
  954. RESERVED_0 : array[0..2] of byte;
  955. IDCOMP : byte; // *< Peripheral ID Complement register, offset: 0x4
  956. RESERVED_1 : array[0..2] of byte;
  957. REV : byte; // *< Peripheral Revision register, offset: 0x8
  958. RESERVED_2 : array[0..2] of byte;
  959. ADDINFO : byte; // *< Peripheral Additional Info register, offset: 0xC
  960. RESERVED_3 : array[0..2] of byte;
  961. OTGISTAT : byte; // *< OTG Interrupt Status register, offset: 0x10
  962. RESERVED_4 : array[0..2] of byte;
  963. OTGICR : byte; // *< OTG Interrupt Control register, offset: 0x14
  964. RESERVED_5 : array[0..2] of byte;
  965. OTGSTAT : byte; // *< OTG Status register, offset: 0x18
  966. RESERVED_6 : array[0..2] of byte;
  967. OTGCTL : byte; // *< OTG Control register, offset: 0x1C
  968. RESERVED_7 : array[0..98] of byte;
  969. ISTAT : byte; // *< Interrupt Status register, offset: 0x80
  970. RESERVED_8 : array[0..2] of byte;
  971. INTEN : byte; // *< Interrupt Enable register, offset: 0x84
  972. RESERVED_9 : array[0..2] of byte;
  973. ERRSTAT : byte; // *< Error Interrupt Status register, offset: 0x88
  974. RESERVED_10 : array[0..2] of byte;
  975. ERREN : byte; // *< Error Interrupt Enable register, offset: 0x8C
  976. RESERVED_11 : array[0..2] of byte;
  977. STAT : byte; // *< Status register, offset: 0x90
  978. RESERVED_12 : array[0..2] of byte;
  979. CTL : byte; // *< Control register, offset: 0x94
  980. RESERVED_13 : array[0..2] of byte;
  981. ADDR : byte; // *< Address register, offset: 0x98
  982. RESERVED_14 : array[0..2] of byte;
  983. BDTPAGE1 : byte; // *< BDT Page register 1, offset: 0x9C
  984. RESERVED_15 : array[0..2] of byte;
  985. FRMNUML : byte; // *< Frame Number register Low, offset: 0xA0
  986. RESERVED_16 : array[0..2] of byte;
  987. FRMNUMH : byte; // *< Frame Number register High, offset: 0xA4
  988. RESERVED_17 : array[0..2] of byte;
  989. TOKEN : byte; // *< Token register, offset: 0xA8
  990. RESERVED_18 : array[0..2] of byte;
  991. SOFTHLD : byte; // *< SOF Threshold register, offset: 0xAC
  992. RESERVED_19 : array[0..2] of byte;
  993. BDTPAGE2 : byte; // *< BDT Page Register 2, offset: 0xB0
  994. RESERVED_20 : array[0..2] of byte;
  995. BDTPAGE3 : byte; // *< BDT Page Register 3, offset: 0xB4
  996. RESERVED_21 : array[0..10] of byte;
  997. ENDPOINT : array[0..15] of TUSB_ENDPOINT;
  998. USBCTRL : byte; // *< USB Control register, offset: 0x100
  999. RESERVED_22 : array[0..2] of byte;
  1000. OBSERVE : byte; // *< USB OTG Observe register, offset: 0x104
  1001. RESERVED_23 : array[0..2] of byte;
  1002. CONTROL : byte; // *< USB OTG Control register, offset: 0x108
  1003. RESERVED_24 : array[0..2] of byte;
  1004. USBTRC0 : byte; // *< USB Transceiver Control register 0, offset: 0x10C
  1005. RESERVED_25 : array[0..6] of byte;
  1006. USBFRMADJUST : byte; // *< Frame Adjust Register, offset: 0x114
  1007. RESERVED_26 : array[0..42] of byte;
  1008. CLK_RECOVER_CTRL : byte; // *< USB Clock recovery control, offset: 0x140
  1009. RESERVED_27 : array[0..2] of byte;
  1010. CLK_RECOVER_IRC_EN : byte; // *< IRC48M oscillator enable register, offset: 0x144
  1011. RESERVED_28 : array[0..22] of byte;
  1012. CLK_RECOVER_INT_STATUS : byte; // *< Clock recovery separated interrupt status, offset: 0x15C
  1013. end;
  1014. const
  1015. USB0_BASE = $40072000;
  1016. var
  1017. USB0 : TUSB_Registers absolute USB0_BASE;
  1018. type
  1019. TVREF_Registers = record
  1020. TRM : byte; // *< VREF Trim Register, offset: 0x0
  1021. SC : byte; // *< VREF Status and Control Register, offset: 0x1
  1022. end;
  1023. const
  1024. VREF_BASE = $40074000;
  1025. var
  1026. VREF : TVREF_Registers absolute VREF_BASE;
  1027. type
  1028. TWDOG_Registers = record
  1029. STCTRLH : word; // *< Watchdog Status and Control Register High, offset: 0x0
  1030. STCTRLL : word; // *< Watchdog Status and Control Register Low, offset: 0x2
  1031. TOVALH : word; // *< Watchdog Time-out Value Register High, offset: 0x4
  1032. TOVALL : word; // *< Watchdog Time-out Value Register Low, offset: 0x6
  1033. WINH : word; // *< Watchdog Window Register High, offset: 0x8
  1034. WINL : word; // *< Watchdog Window Register Low, offset: 0xA
  1035. REFRESH : word; // *< Watchdog Refresh register, offset: 0xC
  1036. UNLOCK : word; // *< Watchdog Unlock register, offset: 0xE
  1037. TMROUTH : word; // *< Watchdog Timer Output Register High, offset: 0x10
  1038. TMROUTL : word; // *< Watchdog Timer Output Register Low, offset: 0x12
  1039. RSTCNT : word; // *< Watchdog Reset Count register, offset: 0x14
  1040. PRESC : word; // *< Watchdog Prescaler register, offset: 0x16
  1041. end;
  1042. const
  1043. WDOG_BASE = $40052000;
  1044. var
  1045. WDOG : TWDOG_Registers absolute WDOG_BASE;
  1046. implementation
  1047. procedure NonMaskableInt_interrupt; external name 'NonMaskableInt_interrupt';
  1048. procedure HardFault_interrupt; external name 'HardFault_interrupt';
  1049. procedure MemoryManagement_interrupt; external name 'MemoryManagement_interrupt';
  1050. procedure BusFault_interrupt; external name 'BusFault_interrupt';
  1051. procedure UsageFault_interrupt; external name 'UsageFault_interrupt';
  1052. procedure SVCall_interrupt; external name 'SVCall_interrupt';
  1053. procedure DebugMonitor_interrupt; external name 'DebugMonitor_interrupt';
  1054. procedure PendSV_interrupt; external name 'PendSV_interrupt';
  1055. procedure SysTick_interrupt; external name 'SysTick_interrupt';
  1056. procedure DMA0_interrupt; external name 'DMA0_interrupt';
  1057. procedure DMA1_interrupt; external name 'DMA1_interrupt';
  1058. procedure DMA2_interrupt; external name 'DMA2_interrupt';
  1059. procedure DMA3_interrupt; external name 'DMA3_interrupt';
  1060. procedure DMA4_interrupt; external name 'DMA4_interrupt';
  1061. procedure DMA5_interrupt; external name 'DMA5_interrupt';
  1062. procedure DMA6_interrupt; external name 'DMA6_interrupt';
  1063. procedure DMA7_interrupt; external name 'DMA7_interrupt';
  1064. procedure DMA8_interrupt; external name 'DMA8_interrupt';
  1065. procedure DMA9_interrupt; external name 'DMA9_interrupt';
  1066. procedure DMA10_interrupt; external name 'DMA10_interrupt';
  1067. procedure DMA11_interrupt; external name 'DMA11_interrupt';
  1068. procedure DMA12_interrupt; external name 'DMA12_interrupt';
  1069. procedure DMA13_interrupt; external name 'DMA13_interrupt';
  1070. procedure DMA14_interrupt; external name 'DMA14_interrupt';
  1071. procedure DMA15_interrupt; external name 'DMA15_interrupt';
  1072. procedure DMA_Error_interrupt; external name 'DMA_Error_interrupt';
  1073. procedure MCM_interrupt; external name 'MCM_interrupt';
  1074. procedure FTF_interrupt; external name 'FTF_interrupt';
  1075. procedure Read_Collision_interrupt; external name 'Read_Collision_interrupt';
  1076. procedure LVD_LVW_interrupt; external name 'LVD_LVW_interrupt';
  1077. procedure LLW_interrupt; external name 'LLW_interrupt';
  1078. procedure Watchdog_interrupt; external name 'Watchdog_interrupt';
  1079. procedure RNG_interrupt; external name 'RNG_interrupt';
  1080. procedure I2C0_interrupt; external name 'I2C0_interrupt';
  1081. procedure I2C1_interrupt; external name 'I2C1_interrupt';
  1082. procedure SPI0_interrupt; external name 'SPI0_interrupt';
  1083. procedure SPI1_interrupt; external name 'SPI1_interrupt';
  1084. procedure I2S0_Tx_interrupt; external name 'I2S0_Tx_interrupt';
  1085. procedure I2S0_Rx_interrupt; external name 'I2S0_Rx_interrupt';
  1086. procedure LPUART0_interrupt; external name 'LPUART0_interrupt';
  1087. procedure UART0_RX_TX_interrupt; external name 'UART0_RX_TX_interrupt';
  1088. procedure UART0_ERR_interrupt; external name 'UART0_ERR_interrupt';
  1089. procedure UART1_RX_TX_interrupt; external name 'UART1_RX_TX_interrupt';
  1090. procedure UART1_ERR_interrupt; external name 'UART1_ERR_interrupt';
  1091. procedure UART2_RX_TX_interrupt; external name 'UART2_RX_TX_interrupt';
  1092. procedure UART2_ERR_interrupt; external name 'UART2_ERR_interrupt';
  1093. procedure RESERVED53_interrupt; external name 'RESERVED53_interrupt';
  1094. procedure RESERVED54_interrupt; external name 'RESERVED54_interrupt';
  1095. procedure ADC0_interrupt; external name 'ADC0_interrupt';
  1096. procedure CMP0_interrupt; external name 'CMP0_interrupt';
  1097. procedure CMP1_interrupt; external name 'CMP1_interrupt';
  1098. procedure FTM0_interrupt; external name 'FTM0_interrupt';
  1099. procedure FTM1_interrupt; external name 'FTM1_interrupt';
  1100. procedure FTM2_interrupt; external name 'FTM2_interrupt';
  1101. procedure RESERVED61_interrupt; external name 'RESERVED61_interrupt';
  1102. procedure RTC_interrupt; external name 'RTC_interrupt';
  1103. procedure RTC_Seconds_interrupt; external name 'RTC_Seconds_interrupt';
  1104. procedure PIT0_interrupt; external name 'PIT0_interrupt';
  1105. procedure PIT1_interrupt; external name 'PIT1_interrupt';
  1106. procedure PIT2_interrupt; external name 'PIT2_interrupt';
  1107. procedure PIT3_interrupt; external name 'PIT3_interrupt';
  1108. procedure PDB0_interrupt; external name 'PDB0_interrupt';
  1109. procedure USB0_interrupt; external name 'USB0_interrupt';
  1110. procedure RESERVED70_interrupt; external name 'RESERVED70_interrupt';
  1111. procedure RESERVED71_interrupt; external name 'RESERVED71_interrupt';
  1112. procedure DAC0_interrupt; external name 'DAC0_interrupt';
  1113. procedure MCG_interrupt; external name 'MCG_interrupt';
  1114. procedure LPTimer_interrupt; external name 'LPTimer_interrupt';
  1115. procedure PORTA_interrupt; external name 'PORTA_interrupt';
  1116. procedure PORTB_interrupt; external name 'PORTB_interrupt';
  1117. procedure PORTC_interrupt; external name 'PORTC_interrupt';
  1118. procedure PORTD_interrupt; external name 'PORTD_interrupt';
  1119. procedure PORTE_interrupt; external name 'PORTE_interrupt';
  1120. procedure SWI_interrupt; external name 'SWI_interrupt';
  1121. procedure RESERVED81_interrupt; external name 'RESERVED81_interrupt';
  1122. procedure RESERVED82_interrupt; external name 'RESERVED82_interrupt';
  1123. procedure RESERVED83_interrupt; external name 'RESERVED83_interrupt';
  1124. procedure RESERVED84_interrupt; external name 'RESERVED84_interrupt';
  1125. procedure RESERVED85_interrupt; external name 'RESERVED85_interrupt';
  1126. procedure RESERVED86_interrupt; external name 'RESERVED86_interrupt';
  1127. procedure FTM3_interrupt; external name 'FTM3_interrupt';
  1128. procedure DAC1_interrupt; external name 'DAC1_interrupt';
  1129. procedure ADC1_interrupt; external name 'ADC1_interrupt';
  1130. procedure RESERVED90_interrupt; external name 'RESERVED90_interrupt';
  1131. procedure RESERVED91_interrupt; external name 'RESERVED91_interrupt';
  1132. procedure RESERVED92_interrupt; external name 'RESERVED92_interrupt';
  1133. procedure RESERVED93_interrupt; external name 'RESERVED93_interrupt';
  1134. procedure RESERVED94_interrupt; external name 'RESERVED94_interrupt';
  1135. procedure RESERVED95_interrupt; external name 'RESERVED95_interrupt';
  1136. procedure RESERVED96_interrupt; external name 'RESERVED96_interrupt';
  1137. procedure RESERVED97_interrupt; external name 'RESERVED97_interrupt';
  1138. procedure RESERVED98_interrupt; external name 'RESERVED98_interrupt';
  1139. procedure RESERVED99_interrupt; external name 'RESERVED99_interrupt';
  1140. procedure RESERVED100_interrupt; external name 'RESERVED100_interrupt';
  1141. procedure RESERVED101_interrupt; external name 'RESERVED101_interrupt';
  1142. {$i cortexm4f_start.inc}
  1143. procedure FlashConfiguration; assembler; nostackframe;
  1144. label flash_conf;
  1145. asm
  1146. .section ".flash_config.flash_conf"
  1147. flash_conf:
  1148. .byte 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFE, 0xFF, 0xFF, 0xFF
  1149. .text
  1150. end;
  1151. procedure LowLevelStartup; assembler; nostackframe; [public, alias: '_LOWLEVELSTART'];
  1152. asm
  1153. // Unlock watchdog
  1154. ldr r0, .LWDOG_BASE
  1155. movw r1, #0xc520 //50464
  1156. strh r1, [r0, #0xE]
  1157. movw r1, #0xd928 //55592
  1158. strh r1, [r0, #0xE]
  1159. nop
  1160. nop
  1161. // Disable watchdog for now
  1162. movs r1, #0x1d2
  1163. strh r1, [r0, #0]
  1164. b Startup
  1165. .LWDOG_BASE:
  1166. .long 0x40052000
  1167. end;
  1168. procedure Vectors; assembler; nostackframe;
  1169. label interrupt_vectors;
  1170. asm
  1171. .section ".init.interrupt_vectors"
  1172. interrupt_vectors:
  1173. .long _stack_top
  1174. .long LowLevelStartup
  1175. .long NonMaskableInt_interrupt
  1176. .long HardFault_interrupt
  1177. .long MemoryManagement_interrupt
  1178. .long BusFault_interrupt
  1179. .long UsageFault_interrupt
  1180. .long 0
  1181. .long 0
  1182. .long 0
  1183. .long 0
  1184. .long SVCall_interrupt
  1185. .long DebugMonitor_interrupt
  1186. .long 0
  1187. .long PendSV_interrupt
  1188. .long SysTick_interrupt
  1189. .long DMA0_interrupt
  1190. .long DMA1_interrupt
  1191. .long DMA2_interrupt
  1192. .long DMA3_interrupt
  1193. .long DMA4_interrupt
  1194. .long DMA5_interrupt
  1195. .long DMA6_interrupt
  1196. .long DMA7_interrupt
  1197. .long DMA8_interrupt
  1198. .long DMA9_interrupt
  1199. .long DMA10_interrupt
  1200. .long DMA11_interrupt
  1201. .long DMA12_interrupt
  1202. .long DMA13_interrupt
  1203. .long DMA14_interrupt
  1204. .long DMA15_interrupt
  1205. .long DMA_Error_interrupt
  1206. .long MCM_interrupt
  1207. .long FTF_interrupt
  1208. .long Read_Collision_interrupt
  1209. .long LVD_LVW_interrupt
  1210. .long LLW_interrupt
  1211. .long Watchdog_interrupt
  1212. .long RNG_interrupt
  1213. .long I2C0_interrupt
  1214. .long I2C1_interrupt
  1215. .long SPI0_interrupt
  1216. .long SPI1_interrupt
  1217. .long I2S0_Tx_interrupt
  1218. .long I2S0_Rx_interrupt
  1219. .long LPUART0_interrupt
  1220. .long UART0_RX_TX_interrupt
  1221. .long UART0_ERR_interrupt
  1222. .long UART1_RX_TX_interrupt
  1223. .long UART1_ERR_interrupt
  1224. .long UART2_RX_TX_interrupt
  1225. .long UART2_ERR_interrupt
  1226. .long RESERVED53_interrupt
  1227. .long RESERVED54_interrupt
  1228. .long ADC0_interrupt
  1229. .long CMP0_interrupt
  1230. .long CMP1_interrupt
  1231. .long FTM0_interrupt
  1232. .long FTM1_interrupt
  1233. .long FTM2_interrupt
  1234. .long RESERVED61_interrupt
  1235. .long RTC_interrupt
  1236. .long RTC_Seconds_interrupt
  1237. .long PIT0_interrupt
  1238. .long PIT1_interrupt
  1239. .long PIT2_interrupt
  1240. .long PIT3_interrupt
  1241. .long PDB0_interrupt
  1242. .long USB0_interrupt
  1243. .long RESERVED70_interrupt
  1244. .long RESERVED71_interrupt
  1245. .long DAC0_interrupt
  1246. .long MCG_interrupt
  1247. .long LPTimer_interrupt
  1248. .long PORTA_interrupt
  1249. .long PORTB_interrupt
  1250. .long PORTC_interrupt
  1251. .long PORTD_interrupt
  1252. .long PORTE_interrupt
  1253. .long SWI_interrupt
  1254. .long RESERVED81_interrupt
  1255. .long RESERVED82_interrupt
  1256. .long RESERVED83_interrupt
  1257. .long RESERVED84_interrupt
  1258. .long RESERVED85_interrupt
  1259. .long RESERVED86_interrupt
  1260. .long FTM3_interrupt
  1261. .long DAC1_interrupt
  1262. .long ADC1_interrupt
  1263. .long RESERVED90_interrupt
  1264. .long RESERVED91_interrupt
  1265. .long RESERVED92_interrupt
  1266. .long RESERVED93_interrupt
  1267. .long RESERVED94_interrupt
  1268. .long RESERVED95_interrupt
  1269. .long RESERVED96_interrupt
  1270. .long RESERVED97_interrupt
  1271. .long RESERVED98_interrupt
  1272. .long RESERVED99_interrupt
  1273. .long RESERVED100_interrupt
  1274. .long RESERVED101_interrupt
  1275. .weak NonMaskableInt_interrupt
  1276. .weak HardFault_interrupt
  1277. .weak MemoryManagement_interrupt
  1278. .weak BusFault_interrupt
  1279. .weak UsageFault_interrupt
  1280. .weak SVCall_interrupt
  1281. .weak DebugMonitor_interrupt
  1282. .weak PendSV_interrupt
  1283. .weak SysTick_interrupt
  1284. .weak DMA0_interrupt
  1285. .weak DMA1_interrupt
  1286. .weak DMA2_interrupt
  1287. .weak DMA3_interrupt
  1288. .weak DMA4_interrupt
  1289. .weak DMA5_interrupt
  1290. .weak DMA6_interrupt
  1291. .weak DMA7_interrupt
  1292. .weak DMA8_interrupt
  1293. .weak DMA9_interrupt
  1294. .weak DMA10_interrupt
  1295. .weak DMA11_interrupt
  1296. .weak DMA12_interrupt
  1297. .weak DMA13_interrupt
  1298. .weak DMA14_interrupt
  1299. .weak DMA15_interrupt
  1300. .weak DMA_Error_interrupt
  1301. .weak MCM_interrupt
  1302. .weak FTF_interrupt
  1303. .weak Read_Collision_interrupt
  1304. .weak LVD_LVW_interrupt
  1305. .weak LLW_interrupt
  1306. .weak Watchdog_interrupt
  1307. .weak RNG_interrupt
  1308. .weak I2C0_interrupt
  1309. .weak I2C1_interrupt
  1310. .weak SPI0_interrupt
  1311. .weak SPI1_interrupt
  1312. .weak I2S0_Tx_interrupt
  1313. .weak I2S0_Rx_interrupt
  1314. .weak LPUART0_interrupt
  1315. .weak UART0_RX_TX_interrupt
  1316. .weak UART0_ERR_interrupt
  1317. .weak UART1_RX_TX_interrupt
  1318. .weak UART1_ERR_interrupt
  1319. .weak UART2_RX_TX_interrupt
  1320. .weak UART2_ERR_interrupt
  1321. .weak RESERVED53_interrupt
  1322. .weak RESERVED54_interrupt
  1323. .weak ADC0_interrupt
  1324. .weak CMP0_interrupt
  1325. .weak CMP1_interrupt
  1326. .weak FTM0_interrupt
  1327. .weak FTM1_interrupt
  1328. .weak FTM2_interrupt
  1329. .weak RESERVED61_interrupt
  1330. .weak RTC_interrupt
  1331. .weak RTC_Seconds_interrupt
  1332. .weak PIT0_interrupt
  1333. .weak PIT1_interrupt
  1334. .weak PIT2_interrupt
  1335. .weak PIT3_interrupt
  1336. .weak PDB0_interrupt
  1337. .weak USB0_interrupt
  1338. .weak RESERVED70_interrupt
  1339. .weak RESERVED71_interrupt
  1340. .weak DAC0_interrupt
  1341. .weak MCG_interrupt
  1342. .weak LPTimer_interrupt
  1343. .weak PORTA_interrupt
  1344. .weak PORTB_interrupt
  1345. .weak PORTC_interrupt
  1346. .weak PORTD_interrupt
  1347. .weak PORTE_interrupt
  1348. .weak SWI_interrupt
  1349. .weak RESERVED81_interrupt
  1350. .weak RESERVED82_interrupt
  1351. .weak RESERVED83_interrupt
  1352. .weak RESERVED84_interrupt
  1353. .weak RESERVED85_interrupt
  1354. .weak RESERVED86_interrupt
  1355. .weak FTM3_interrupt
  1356. .weak DAC1_interrupt
  1357. .weak ADC1_interrupt
  1358. .weak RESERVED90_interrupt
  1359. .weak RESERVED91_interrupt
  1360. .weak RESERVED92_interrupt
  1361. .weak RESERVED93_interrupt
  1362. .weak RESERVED94_interrupt
  1363. .weak RESERVED95_interrupt
  1364. .weak RESERVED96_interrupt
  1365. .weak RESERVED97_interrupt
  1366. .weak RESERVED98_interrupt
  1367. .weak RESERVED99_interrupt
  1368. .weak RESERVED100_interrupt
  1369. .weak RESERVED101_interrupt
  1370. .set NonMaskableInt_interrupt, HaltProc
  1371. .set HardFault_interrupt, HaltProc
  1372. .set MemoryManagement_interrupt, HaltProc
  1373. .set BusFault_interrupt, HaltProc
  1374. .set UsageFault_interrupt, HaltProc
  1375. .set SVCall_interrupt, HaltProc
  1376. .set DebugMonitor_interrupt, HaltProc
  1377. .set PendSV_interrupt, HaltProc
  1378. .set SysTick_interrupt, HaltProc
  1379. .set DMA0_interrupt, HaltProc
  1380. .set DMA1_interrupt, HaltProc
  1381. .set DMA2_interrupt, HaltProc
  1382. .set DMA3_interrupt, HaltProc
  1383. .set DMA4_interrupt, HaltProc
  1384. .set DMA5_interrupt, HaltProc
  1385. .set DMA6_interrupt, HaltProc
  1386. .set DMA7_interrupt, HaltProc
  1387. .set DMA8_interrupt, HaltProc
  1388. .set DMA9_interrupt, HaltProc
  1389. .set DMA10_interrupt, HaltProc
  1390. .set DMA11_interrupt, HaltProc
  1391. .set DMA12_interrupt, HaltProc
  1392. .set DMA13_interrupt, HaltProc
  1393. .set DMA14_interrupt, HaltProc
  1394. .set DMA15_interrupt, HaltProc
  1395. .set DMA_Error_interrupt, HaltProc
  1396. .set MCM_interrupt, HaltProc
  1397. .set FTF_interrupt, HaltProc
  1398. .set Read_Collision_interrupt, HaltProc
  1399. .set LVD_LVW_interrupt, HaltProc
  1400. .set LLW_interrupt, HaltProc
  1401. .set Watchdog_interrupt, HaltProc
  1402. .set RNG_interrupt, HaltProc
  1403. .set I2C0_interrupt, HaltProc
  1404. .set I2C1_interrupt, HaltProc
  1405. .set SPI0_interrupt, HaltProc
  1406. .set SPI1_interrupt, HaltProc
  1407. .set I2S0_Tx_interrupt, HaltProc
  1408. .set I2S0_Rx_interrupt, HaltProc
  1409. .set LPUART0_interrupt, HaltProc
  1410. .set UART0_RX_TX_interrupt, HaltProc
  1411. .set UART0_ERR_interrupt, HaltProc
  1412. .set UART1_RX_TX_interrupt, HaltProc
  1413. .set UART1_ERR_interrupt, HaltProc
  1414. .set UART2_RX_TX_interrupt, HaltProc
  1415. .set UART2_ERR_interrupt, HaltProc
  1416. .set RESERVED53_interrupt, HaltProc
  1417. .set RESERVED54_interrupt, HaltProc
  1418. .set ADC0_interrupt, HaltProc
  1419. .set CMP0_interrupt, HaltProc
  1420. .set CMP1_interrupt, HaltProc
  1421. .set FTM0_interrupt, HaltProc
  1422. .set FTM1_interrupt, HaltProc
  1423. .set FTM2_interrupt, HaltProc
  1424. .set RESERVED61_interrupt, HaltProc
  1425. .set RTC_interrupt, HaltProc
  1426. .set RTC_Seconds_interrupt, HaltProc
  1427. .set PIT0_interrupt, HaltProc
  1428. .set PIT1_interrupt, HaltProc
  1429. .set PIT2_interrupt, HaltProc
  1430. .set PIT3_interrupt, HaltProc
  1431. .set PDB0_interrupt, HaltProc
  1432. .set USB0_interrupt, HaltProc
  1433. .set RESERVED70_interrupt, HaltProc
  1434. .set RESERVED71_interrupt, HaltProc
  1435. .set DAC0_interrupt, HaltProc
  1436. .set MCG_interrupt, HaltProc
  1437. .set LPTimer_interrupt, HaltProc
  1438. .set PORTA_interrupt, HaltProc
  1439. .set PORTB_interrupt, HaltProc
  1440. .set PORTC_interrupt, HaltProc
  1441. .set PORTD_interrupt, HaltProc
  1442. .set PORTE_interrupt, HaltProc
  1443. .set SWI_interrupt, HaltProc
  1444. .set RESERVED81_interrupt, HaltProc
  1445. .set RESERVED82_interrupt, HaltProc
  1446. .set RESERVED83_interrupt, HaltProc
  1447. .set RESERVED84_interrupt, HaltProc
  1448. .set RESERVED85_interrupt, HaltProc
  1449. .set RESERVED86_interrupt, HaltProc
  1450. .set FTM3_interrupt, HaltProc
  1451. .set DAC1_interrupt, HaltProc
  1452. .set ADC1_interrupt, HaltProc
  1453. .set RESERVED90_interrupt, HaltProc
  1454. .set RESERVED91_interrupt, HaltProc
  1455. .set RESERVED92_interrupt, HaltProc
  1456. .set RESERVED93_interrupt, HaltProc
  1457. .set RESERVED94_interrupt, HaltProc
  1458. .set RESERVED95_interrupt, HaltProc
  1459. .set RESERVED96_interrupt, HaltProc
  1460. .set RESERVED97_interrupt, HaltProc
  1461. .set RESERVED98_interrupt, HaltProc
  1462. .set RESERVED99_interrupt, HaltProc
  1463. .set RESERVED100_interrupt, HaltProc
  1464. .set RESERVED101_interrupt, HaltProc
  1465. .text
  1466. end;
  1467. end.