mk22f51212.pp 73 KB

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