mk20d7.pp 77 KB

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