mk20d7.pp 77 KB

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