nrf51.pp 47 KB

123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960616263646566676869707172737475767778798081828384858687888990919293949596979899100101102103104105106107108109110111112113114115116117118119120121122123124125126127128129130131132133134135136137138139140141142143144145146147148149150151152153154155156157158159160161162163164165166167168169170171172173174175176177178179180181182183184185186187188189190191192193194195196197198199200201202203204205206207208209210211212213214215216217218219220221222223224225226227228229230231232233234235236237238239240241242243244245246247248249250251252253254255256257258259260261262263264265266267268269270271272273274275276277278279280281282283284285286287288289290291292293294295296297298299300301302303304305306307308309310311312313314315316317318319320321322323324325326327328329330331332333334335336337338339340341342343344345346347348349350351352353354355356357358359360361362363364365366367368369370371372373374375376377378379380381382383384385386387388389390391392393394395396397398399400401402403404405406407408409410411412413414415416417418419420421422423424425426427428429430431432433434435436437438439440441442443444445446447448449450451452453454455456457458459460461462463464465466467468469470471472473474475476477478479480481482483484485486487488489490491492493494495496497498499500501502503504505506507508509510511512513514515516517518519520521522523524525526527528529530531532533534535536537538539540541542543544545546547548549550551552553554555556557558559560561562563564565566567568569570571572573574575576577578579580581582583584585586587588589590591592593594595596597598599600601602603604605606607608609610611612613614615616617618619620621622623624625626627628629630631632633634635636637638639640641642643644645646647648649650651652653654655656657658659660661662663664665666667668669670671672673674675676677678679680681682683684685686687688689690691692693694695696697698699700701702703704705706707708709710711712713714715716717718719720721722723724725726727728729730731732733734735736737738739740741742743744745746747748749750751752753754755756757758759760761762763764765766767768769770771772773774775776777778779780781782783784785786787788789790791792793794795796797798799800801802803804805806807808809810811812813814815816817818819820821822823824825826827828829830831832833834835836837838839840841842843844845846847848849850851852853854855856857858859860861862863864865866867868869870871872873874875876877878879880881882883884885886887888889890891892893894895896897898899900901902903904905906907908909910911912913914915916917918919920921922923924925926927928929930931932933934935936937938939940941942943944
  1. {$IFNDEF FPC_DOTTEDUNITS}
  2. unit nrf51;
  3. {$ENDIF FPC_DOTTEDUNITS}
  4. interface
  5. {$PACKRECORDS 2}
  6. {$GOTO ON}
  7. {$MODESWITCH ADVANCEDRECORDS}
  8. // *****************************************************************************************************
  9. // * @file nrf51.h
  10. // CMSIS Cortex-M0 Peripheral Access Layer Header File for
  11. // * nrf51 from Nordic Semiconductor.
  12. // *
  13. // * @version V522
  14. // * @date 18. November 2016
  15. // *
  16. // * @note Generated with SVDConv V2.81d
  17. // * from CMSIS SVD File 'nrf51.svd' Version 522,
  18. // *
  19. // * @par Copyright (c) 2016, Nordic Semiconductor ASA
  20. // * All rights reserved.
  21. // *
  22. // * Redistribution and use in source and binary forms, with or without
  23. // * modification, are permitted provided that the following conditions are met:
  24. // *
  25. // * * Redistributions of source code must retain the above copyright notice, this
  26. // * list of conditions and the following disclaimer.
  27. // *
  28. // * * Redistributions in binary form must reproduce the above copyright notice,
  29. // * this list of conditions and the following disclaimer in the documentation
  30. // * and/or other materials provided with the distribution.
  31. // *
  32. // * * Neither the name of Nordic Semiconductor ASA nor the names of its
  33. // * contributors may be used to endorse or promote products derived from
  34. // * this software without specific prior written permission.
  35. // *
  36. // * THIS SOFTWARE IS PROVIDED BY THE COPYRIGHT HOLDERS AND CONTRIBUTORS "AS IS"
  37. // * AND ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT LIMITED TO, THE
  38. // * IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE ARE
  39. // * DISCLAIMED. IN NO EVENT SHALL THE COPYRIGHT HOLDER OR CONTRIBUTORS BE LIABLE
  40. // * FOR ANY DIRECT, INDIRECT, INCIDENTAL, SPECIAL, EXEMPLARY, OR CONSEQUENTIAL
  41. // * DAMAGES (INCLUDING, BUT NOT LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS OR
  42. // * SERVICES; LOSS OF USE, DATA, OR PROFITS; OR BUSINESS INTERRUPTION) HOWEVER
  43. // * CAUSED AND ON ANY THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT LIABILITY,
  44. // * OR TORT (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT OF THE USE
  45. // * OF THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE.
  46. // *
  47. // *
  48. // ******************************************************************************************************
  49. // ------------------------- Interrupt Number Definition ------------------------
  50. type
  51. TIRQn_Enum = (
  52. Reset_IRQn = -15, // 1 Reset Vector, invoked on Power up and warm reset
  53. NonMaskableInt_IRQn = -14, // 2 Non maskable Interrupt, cannot be stopped or preempted
  54. HardFault_IRQn = -13, // 3 Hard Fault, all classes of Fault
  55. SVCall_IRQn = -5, // 11 System Service Call via SVC instruction
  56. DebugMonitor_IRQn = -4, // 12 Debug Monitor
  57. PendSV_IRQn = -2, // 14 Pendable request for system service
  58. SysTick_IRQn = -1, // 15 System Tick Timer
  59. POWER_CLOCK_IRQn = 0, // 0 POWER_CLOCK
  60. RADIO_IRQn = 1, // 1 RADIO
  61. UART0_IRQn = 2, // 2 UART0
  62. SPI0_TWI0_IRQn = 3, // 3 SPI0_TWI0
  63. SPI1_TWI1_IRQn = 4, // 4 SPI1_TWI1
  64. GPIOTE_IRQn = 6, // 6 GPIOTE
  65. ADC_IRQn = 7, // 7 ADC
  66. TIMER0_IRQn = 8, // 8 TIMER0
  67. TIMER1_IRQn = 9, // 9 TIMER1
  68. TIMER2_IRQn = 10, // 10 TIMER2
  69. RTC0_IRQn = 11, // 11 RTC0
  70. TEMP_IRQn = 12, // 12 TEMP
  71. RNG_IRQn = 13, // 13 RNG
  72. ECB_IRQn = 14, // 14 ECB
  73. CCM_AAR_IRQn = 15, // 15 CCM_AAR
  74. WDT_IRQn = 16, // 16 WDT
  75. RTC1_IRQn = 17, // 17 RTC1
  76. QDEC_IRQn = 18, // 18 QDEC
  77. LPCOMP_IRQn = 19, // 19 LPCOMP
  78. SWI0_IRQn = 20, // 20 SWI0
  79. SWI1_IRQn = 21, // 21 SWI1
  80. SWI2_IRQn = 22, // 22 SWI2
  81. SWI3_IRQn = 23, // 23 SWI3
  82. SWI4_IRQn = 24, // 24 SWI4
  83. SWI5_IRQn = 25 // 25 SWI5
  84. );
  85. TPPI_TASKS_CHG_Registers = record
  86. EN : longword; // Enable channel group.
  87. DIS : longword; // Disable channel group.
  88. end;
  89. TPPI_CH_Registers = record
  90. EEP : longword; // Channel event end-point.
  91. TEP : longword; // Channel task end-point.
  92. end;
  93. TPOWER_Registers = record // POWER Structure
  94. RESERVED0 : array[0..29] of longword;
  95. TASKS_CONSTLAT : longword; // Enable constant latency mode.
  96. TASKS_LOWPWR : longword; // Enable low power mode (variable latency).
  97. RESERVED1 : array[0..33] of longword;
  98. EVENTS_POFWARN : longword; // Power failure warning.
  99. RESERVED2 : array[0..125] of longword;
  100. INTENSET : longword; // Interrupt enable set register.
  101. INTENCLR : longword; // Interrupt enable clear register.
  102. RESERVED3 : array[0..60] of longword;
  103. RESETREAS : longword; // Reset reason.
  104. RESERVED4 : array[0..8] of longword;
  105. RAMSTATUS : longword; // Ram status register.
  106. RESERVED5 : array[0..52] of longword;
  107. SYSTEMOFF : longword; // System off register.
  108. RESERVED6 : array[0..2] of longword;
  109. POFCON : longword; // Power failure configuration.
  110. RESERVED7 : array[0..1] of longword;
  111. GPREGRET : longword; // General purpose retention register. This register is a retained
  112. RESERVED8 : longword;
  113. RAMON : longword; // Ram on/off.
  114. RESERVED9 : array[0..6] of longword;
  115. RESET : longword; // Pin reset functionality configuration register. This register
  116. RESERVED10 : array[0..2] of longword;
  117. RAMONB : longword; // Ram on/off.
  118. RESERVED11 : array[0..7] of longword;
  119. DCDCEN : longword; // DCDC converter enable configuration register.
  120. RESERVED12 : array[0..290] of longword;
  121. DCDCFORCE : longword; // DCDC power-up force register.
  122. end;
  123. TCLOCK_Registers = record // CLOCK Structure
  124. TASKS_HFCLKSTART : longword; // Start HFCLK clock source.
  125. TASKS_HFCLKSTOP : longword; // Stop HFCLK clock source.
  126. TASKS_LFCLKSTART : longword; // Start LFCLK clock source.
  127. TASKS_LFCLKSTOP : longword; // Stop LFCLK clock source.
  128. TASKS_CAL : longword; // Start calibration of LFCLK RC oscillator.
  129. TASKS_CTSTART : longword; // Start calibration timer.
  130. TASKS_CTSTOP : longword; // Stop calibration timer.
  131. RESERVED0 : array[0..56] of longword;
  132. EVENTS_HFCLKSTARTED : longword; // HFCLK oscillator started.
  133. EVENTS_LFCLKSTARTED : longword; // LFCLK oscillator started.
  134. RESERVED1 : longword;
  135. EVENTS_DONE : longword; // Calibration of LFCLK RC oscillator completed.
  136. EVENTS_CTTO : longword; // Calibration timer timeout.
  137. RESERVED2 : array[0..123] of longword;
  138. INTENSET : longword; // Interrupt enable set register.
  139. INTENCLR : longword; // Interrupt enable clear register.
  140. RESERVED3 : array[0..62] of longword;
  141. HFCLKRUN : longword; // Task HFCLKSTART trigger status.
  142. HFCLKSTAT : longword; // High frequency clock status.
  143. RESERVED4 : longword;
  144. LFCLKRUN : longword; // Task LFCLKSTART triggered status.
  145. LFCLKSTAT : longword; // Low frequency clock status.
  146. LFCLKSRCCOPY : longword; // Clock source for the LFCLK clock, set when task LKCLKSTART is
  147. RESERVED5 : array[0..61] of longword;
  148. LFCLKSRC : longword; // Clock source for the LFCLK clock.
  149. RESERVED6 : array[0..6] of longword;
  150. CTIV : longword; // Calibration timer interval.
  151. RESERVED7 : array[0..4] of longword;
  152. XTALFREQ : longword; // Crystal frequency.
  153. end;
  154. TMPU_Registers = record // MPU Structure
  155. RESERVED0 : array[0..329] of longword;
  156. PERR0 : longword; // Configuration of peripherals in mpu regions.
  157. RLENR0 : longword; // Length of RAM region 0.
  158. RESERVED1 : array[0..51] of longword;
  159. PROTENSET0 : longword; // Erase and write protection bit enable set register.
  160. PROTENSET1 : longword; // Erase and write protection bit enable set register.
  161. DISABLEINDEBUG : longword; // Disable erase and write protection mechanism in debug mode.
  162. PROTBLOCKSIZE : longword; // Erase and write protection block size.
  163. end;
  164. TRADIO_Registers = record // RADIO Structure
  165. TASKS_TXEN : longword; // Enable radio in TX mode.
  166. TASKS_RXEN : longword; // Enable radio in RX mode.
  167. TASKS_START : longword; // Start radio.
  168. TASKS_STOP : longword; // Stop radio.
  169. TASKS_DISABLE : longword; // Disable radio.
  170. TASKS_RSSISTART : longword; // Start the RSSI and take one sample of the receive signal strength.
  171. TASKS_RSSISTOP : longword; // Stop the RSSI measurement.
  172. TASKS_BCSTART : longword; // Start the bit counter.
  173. TASKS_BCSTOP : longword; // Stop the bit counter.
  174. RESERVED0 : array[0..54] of longword;
  175. EVENTS_READY : longword; // Ready event.
  176. EVENTS_ADDRESS : longword; // Address event.
  177. EVENTS_PAYLOAD : longword; // Payload event.
  178. EVENTS_END : longword; // End event.
  179. EVENTS_DISABLED : longword; // Disable event.
  180. EVENTS_DEVMATCH : longword; // A device address match occurred on the last received packet.
  181. EVENTS_DEVMISS : longword; // No device address match occurred on the last received packet.
  182. EVENTS_RSSIEND : longword; // Sampling of the receive signal strength complete. A new RSSI
  183. RESERVED1 : array[0..1] of longword;
  184. EVENTS_BCMATCH : longword; // Bit counter reached bit count value specified in BCC register.
  185. RESERVED2 : array[0..52] of longword;
  186. SHORTS : longword; // Shortcuts for the radio.
  187. RESERVED3 : array[0..63] of longword;
  188. INTENSET : longword; // Interrupt enable set register.
  189. INTENCLR : longword; // Interrupt enable clear register.
  190. RESERVED4 : array[0..60] of longword;
  191. CRCSTATUS : longword; // CRC status of received packet.
  192. RESERVED5 : longword;
  193. RXMATCH : longword; // Received address.
  194. RXCRC : longword; // Received CRC.
  195. DAI : longword; // Device address match index.
  196. RESERVED6 : array[0..59] of longword;
  197. PACKETPTR : longword; // Packet pointer. Decision point: START task.
  198. FREQUENCY : longword; // Frequency.
  199. TXPOWER : longword; // Output power.
  200. MODE : longword; // Data rate and modulation.
  201. PCNF0 : longword; // Packet configuration 0.
  202. PCNF1 : longword; // Packet configuration 1.
  203. BASE0 : longword; // Radio base address 0. Decision point: START task.
  204. BASE1 : longword; // Radio base address 1. Decision point: START task.
  205. PREFIX0 : longword; // Prefixes bytes for logical addresses 0 to 3.
  206. PREFIX1 : longword; // Prefixes bytes for logical addresses 4 to 7.
  207. TXADDRESS : longword; // Transmit address select.
  208. RXADDRESSES : longword; // Receive address select.
  209. CRCCNF : longword; // CRC configuration.
  210. CRCPOLY : longword; // CRC polynomial.
  211. CRCINIT : longword; // CRC initial value.
  212. TEST : longword; // Test features enable register.
  213. TIFS : longword; // Inter Frame Spacing in microseconds.
  214. RSSISAMPLE : longword; // RSSI sample.
  215. RESERVED7 : longword;
  216. STATE : longword; // Current radio state.
  217. DATAWHITEIV : longword; // Data whitening initial value.
  218. RESERVED8 : array[0..1] of longword;
  219. BCC : longword; // Bit counter compare.
  220. RESERVED9 : array[0..38] of longword;
  221. DAB : array[0..7] of longword; // Device address base segment.
  222. DAP : array[0..7] of longword; // Device address prefix.
  223. DACNF : longword; // Device address match configuration.
  224. RESERVED10 : array[0..55] of longword;
  225. OVERRIDE0 : longword; // Trim value override register 0.
  226. OVERRIDE1 : longword; // Trim value override register 1.
  227. OVERRIDE2 : longword; // Trim value override register 2.
  228. OVERRIDE3 : longword; // Trim value override register 3.
  229. OVERRIDE4 : longword; // Trim value override register 4.
  230. RESERVED11 : array[0..560] of longword;
  231. POWER : longword; // Peripheral power control.
  232. end;
  233. TUART_Registers = record // UART Structure
  234. TASKS_STARTRX : longword; // Start UART receiver.
  235. TASKS_STOPRX : longword; // Stop UART receiver.
  236. TASKS_STARTTX : longword; // Start UART transmitter.
  237. TASKS_STOPTX : longword; // Stop UART transmitter.
  238. RESERVED0 : array[0..2] of longword;
  239. TASKS_SUSPEND : longword; // Suspend UART.
  240. RESERVED1 : array[0..55] of longword;
  241. EVENTS_CTS : longword; // CTS activated.
  242. EVENTS_NCTS : longword; // CTS deactivated.
  243. EVENTS_RXDRDY : longword; // Data received in RXD.
  244. RESERVED2 : array[0..3] of longword;
  245. EVENTS_TXDRDY : longword; // Data sent from TXD.
  246. RESERVED3 : longword;
  247. EVENTS_ERROR : longword; // Error detected.
  248. RESERVED4 : array[0..6] of longword;
  249. EVENTS_RXTO : longword; // Receiver timeout.
  250. RESERVED5 : array[0..45] of longword;
  251. SHORTS : longword; // Shortcuts for UART.
  252. RESERVED6 : array[0..63] of longword;
  253. INTENSET : longword; // Interrupt enable set register.
  254. INTENCLR : longword; // Interrupt enable clear register.
  255. RESERVED7 : array[0..92] of longword;
  256. ERRORSRC : longword; // Error source. Write error field to 1 to clear error.
  257. RESERVED8 : array[0..30] of longword;
  258. ENABLE : longword; // Enable UART and acquire IOs.
  259. RESERVED9 : longword;
  260. PSELRTS : longword; // Pin select for RTS.
  261. PSELTXD : longword; // Pin select for TXD.
  262. PSELCTS : longword; // Pin select for CTS.
  263. PSELRXD : longword; // Pin select for RXD.
  264. RXD : longword; // RXD register. On read action the buffer pointer is displaced.
  265. TXD : longword; // TXD register.
  266. RESERVED10 : longword;
  267. BAUDRATE : longword; // UART Baudrate.
  268. RESERVED11 : array[0..16] of longword;
  269. CONFIG : longword; // Configuration of parity and hardware flow control register.
  270. RESERVED12 : array[0..674] of longword;
  271. POWER : longword; // Peripheral power control.
  272. end;
  273. TSPI_Registers = record // SPI Structure
  274. RESERVED0 : array[0..65] of longword;
  275. EVENTS_READY : longword; // TXD byte sent and RXD byte received.
  276. RESERVED1 : array[0..125] of longword;
  277. INTENSET : longword; // Interrupt enable set register.
  278. INTENCLR : longword; // Interrupt enable clear register.
  279. RESERVED2 : array[0..124] of longword;
  280. ENABLE : longword; // Enable SPI.
  281. RESERVED3 : longword;
  282. PSELSCK : longword; // Pin select for SCK.
  283. PSELMOSI : longword; // Pin select for MOSI.
  284. PSELMISO : longword; // Pin select for MISO.
  285. RESERVED4 : longword;
  286. RXD : longword; // RX data.
  287. TXD : longword; // TX data.
  288. RESERVED5 : longword;
  289. FREQUENCY : longword; // SPI frequency
  290. RESERVED6 : array[0..10] of longword;
  291. CONFIG : longword; // Configuration register.
  292. RESERVED7 : array[0..680] of longword;
  293. POWER : longword; // Peripheral power control.
  294. end;
  295. TTWI_Registers = record // TWI Structure
  296. TASKS_STARTRX : longword; // Start 2-Wire master receive sequence.
  297. RESERVED0 : longword;
  298. TASKS_STARTTX : longword; // Start 2-Wire master transmit sequence.
  299. RESERVED1 : array[0..1] of longword;
  300. TASKS_STOP : longword; // Stop 2-Wire transaction.
  301. RESERVED2 : longword;
  302. TASKS_SUSPEND : longword; // Suspend 2-Wire transaction.
  303. TASKS_RESUME : longword; // Resume 2-Wire transaction.
  304. RESERVED3 : array[0..55] of longword;
  305. EVENTS_STOPPED : longword; // Two-wire stopped.
  306. EVENTS_RXDREADY : longword; // Two-wire ready to deliver new RXD byte received.
  307. RESERVED4 : array[0..3] of longword;
  308. EVENTS_TXDSENT : longword; // Two-wire finished sending last TXD byte.
  309. RESERVED5 : longword;
  310. EVENTS_ERROR : longword; // Two-wire error detected.
  311. RESERVED6 : array[0..3] of longword;
  312. EVENTS_BB : longword; // Two-wire byte boundary.
  313. RESERVED7 : array[0..2] of longword;
  314. EVENTS_SUSPENDED : longword; // Two-wire suspended.
  315. RESERVED8 : array[0..44] of longword;
  316. SHORTS : longword; // Shortcuts for TWI.
  317. RESERVED9 : array[0..63] of longword;
  318. INTENSET : longword; // Interrupt enable set register.
  319. INTENCLR : longword; // Interrupt enable clear register.
  320. RESERVED10 : array[0..109] of longword;
  321. ERRORSRC : longword; // Two-wire error source. Write error field to 1 to clear error.
  322. RESERVED11 : array[0..13] of longword;
  323. ENABLE : longword; // Enable two-wire master.
  324. RESERVED12 : longword;
  325. PSELSCL : longword; // Pin select for SCL.
  326. PSELSDA : longword; // Pin select for SDA.
  327. RESERVED13 : array[0..1] of longword;
  328. RXD : longword; // RX data register.
  329. TXD : longword; // TX data register.
  330. RESERVED14 : longword;
  331. FREQUENCY : longword; // Two-wire frequency.
  332. RESERVED15 : array[0..23] of longword;
  333. ADDRESS : longword; // Address used in the two-wire transfer.
  334. RESERVED16 : array[0..667] of longword;
  335. POWER : longword; // Peripheral power control.
  336. end;
  337. TSPIS_Registers = record // SPIS Structure
  338. RESERVED0 : array[0..8] of longword;
  339. TASKS_ACQUIRE : longword; // Acquire SPI semaphore.
  340. TASKS_RELEASE : longword; // Release SPI semaphore.
  341. RESERVED1 : array[0..53] of longword;
  342. EVENTS_END : longword; // Granted transaction completed.
  343. RESERVED2 : array[0..1] of longword;
  344. EVENTS_ENDRX : longword; // End of RXD buffer reached
  345. RESERVED3 : array[0..4] of longword;
  346. EVENTS_ACQUIRED : longword; // Semaphore acquired.
  347. RESERVED4 : array[0..52] of longword;
  348. SHORTS : longword; // Shortcuts for SPIS.
  349. RESERVED5 : array[0..63] of longword;
  350. INTENSET : longword; // Interrupt enable set register.
  351. INTENCLR : longword; // Interrupt enable clear register.
  352. RESERVED6 : array[0..60] of longword;
  353. SEMSTAT : longword; // Semaphore status.
  354. RESERVED7 : array[0..14] of longword;
  355. STATUS : longword; // Status from last transaction.
  356. RESERVED8 : array[0..46] of longword;
  357. ENABLE : longword; // Enable SPIS.
  358. RESERVED9 : longword;
  359. PSELSCK : longword; // Pin select for SCK.
  360. PSELMISO : longword; // Pin select for MISO.
  361. PSELMOSI : longword; // Pin select for MOSI.
  362. PSELCSN : longword; // Pin select for CSN.
  363. RESERVED10 : array[0..6] of longword;
  364. RXDPTR : longword; // RX data pointer.
  365. MAXRX : longword; // Maximum number of bytes in the receive buffer.
  366. AMOUNTRX : longword; // Number of bytes received in last granted transaction.
  367. RESERVED11 : longword;
  368. TXDPTR : longword; // TX data pointer.
  369. MAXTX : longword; // Maximum number of bytes in the transmit buffer.
  370. AMOUNTTX : longword; // Number of bytes transmitted in last granted transaction.
  371. RESERVED12 : longword;
  372. CONFIG : longword; // Configuration register.
  373. RESERVED13 : longword;
  374. DEF : longword; // Default character.
  375. RESERVED14 : array[0..23] of longword;
  376. ORC : longword; // Over-read character.
  377. RESERVED15 : array[0..653] of longword;
  378. POWER : longword; // Peripheral power control.
  379. end;
  380. TGPIOTE_Registers = record // GPIOTE Structure
  381. TASKS_OUT : array[0..3] of longword; // Tasks asssociated with GPIOTE channels.
  382. RESERVED0 : array[0..59] of longword;
  383. EVENTS_IN : array[0..3] of longword; // Tasks asssociated with GPIOTE channels.
  384. RESERVED1 : array[0..26] of longword;
  385. EVENTS_PORT : longword; // Event generated from multiple pins.
  386. RESERVED2 : array[0..96] of longword;
  387. INTENSET : longword; // Interrupt enable set register.
  388. INTENCLR : longword; // Interrupt enable clear register.
  389. RESERVED3 : array[0..128] of longword;
  390. CONFIG : array[0..3] of longword; // Channel configuration registers.
  391. RESERVED4 : array[0..694] of longword;
  392. POWER : longword; // Peripheral power control.
  393. end;
  394. TADC_Registers = record // ADC Structure
  395. TASKS_START : longword; // Start an ADC conversion.
  396. TASKS_STOP : longword; // Stop ADC.
  397. RESERVED0 : array[0..61] of longword;
  398. EVENTS_END : longword; // ADC conversion complete.
  399. RESERVED1 : array[0..127] of longword;
  400. INTENSET : longword; // Interrupt enable set register.
  401. INTENCLR : longword; // Interrupt enable clear register.
  402. RESERVED2 : array[0..60] of longword;
  403. BUSY : longword; // ADC busy register.
  404. RESERVED3 : array[0..62] of longword;
  405. ENABLE : longword; // ADC enable.
  406. CONFIG : longword; // ADC configuration register.
  407. RESULT : longword; // Result of ADC conversion.
  408. RESERVED4 : array[0..699] of longword;
  409. POWER : longword; // Peripheral power control.
  410. end;
  411. TTIMER_Registers = record // TIMER Structure
  412. TASKS_START : longword; // Start Timer.
  413. TASKS_STOP : longword; // Stop Timer.
  414. TASKS_COUNT : longword; // Increment Timer (In counter mode).
  415. TASKS_CLEAR : longword; // Clear timer.
  416. TASKS_SHUTDOWN : longword; // Shutdown timer.
  417. RESERVED0 : array[0..10] of longword;
  418. TASKS_CAPTURE : array[0..3] of longword; // Capture Timer value to CC[n] registers.
  419. RESERVED1 : array[0..59] of longword;
  420. EVENTS_COMPARE : array[0..3] of longword; // Compare event on CC[n] match.
  421. RESERVED2 : array[0..43] of longword;
  422. SHORTS : longword; // Shortcuts for Timer.
  423. RESERVED3 : array[0..63] of longword;
  424. INTENSET : longword; // Interrupt enable set register.
  425. INTENCLR : longword; // Interrupt enable clear register.
  426. RESERVED4 : array[0..125] of longword;
  427. MODE : longword; // Timer Mode selection.
  428. BITMODE : longword; // Sets timer behaviour.
  429. RESERVED5 : longword;
  430. PRESCALER : longword; // 4-bit prescaler to source clock frequency (max value 9). Source
  431. RESERVED6 : array[0..10] of longword;
  432. CC : array[0..3] of longword; // Capture/compare registers.
  433. RESERVED7 : array[0..682] of longword;
  434. POWER : longword; // Peripheral power control.
  435. end;
  436. TRTC_Registers = record // RTC Structure
  437. TASKS_START : longword; // Start RTC Counter.
  438. TASKS_STOP : longword; // Stop RTC Counter.
  439. TASKS_CLEAR : longword; // Clear RTC Counter.
  440. TASKS_TRIGOVRFLW : longword; // Set COUNTER to 0xFFFFFFF0.
  441. RESERVED0 : array[0..59] of longword;
  442. EVENTS_TICK : longword; // Event on COUNTER increment.
  443. EVENTS_OVRFLW : longword; // Event on COUNTER overflow.
  444. RESERVED1 : array[0..13] of longword;
  445. EVENTS_COMPARE : array[0..3] of longword; // Compare event on CC[n] match.
  446. RESERVED2 : array[0..108] of longword;
  447. INTENSET : longword; // Interrupt enable set register.
  448. INTENCLR : longword; // Interrupt enable clear register.
  449. RESERVED3 : array[0..12] of longword;
  450. EVTEN : longword; // Configures event enable routing to PPI for each RTC event.
  451. EVTENSET : longword; // Enable events routing to PPI. The reading of this register gives
  452. EVTENCLR : longword; // Disable events routing to PPI. The reading of this register
  453. RESERVED4 : array[0..109] of longword;
  454. COUNTER : longword; // Current COUNTER value.
  455. PRESCALER : longword; // 12-bit prescaler for COUNTER frequency (32768/(PRESCALER+1)).
  456. RESERVED5 : array[0..12] of longword;
  457. CC : array[0..3] of longword; // Capture/compare registers.
  458. RESERVED6 : array[0..682] of longword;
  459. POWER : longword; // Peripheral power control.
  460. end;
  461. TTEMP_Registers = record // TEMP Structure
  462. TASKS_START : longword; // Start temperature measurement.
  463. TASKS_STOP : longword; // Stop temperature measurement.
  464. RESERVED0 : array[0..61] of longword;
  465. EVENTS_DATARDY : longword; // Temperature measurement complete, data ready event.
  466. RESERVED1 : array[0..127] of longword;
  467. INTENSET : longword; // Interrupt enable set register.
  468. INTENCLR : longword; // Interrupt enable clear register.
  469. RESERVED2 : array[0..126] of longword;
  470. TEMP : longint; // Die temperature in degC, 2's complement format, 0.25 degC pecision.
  471. RESERVED3 : array[0..699] of longword;
  472. POWER : longword; // Peripheral power control.
  473. end;
  474. TRNG_Registers = record // RNG Structure
  475. TASKS_START : longword; // Start the random number generator.
  476. TASKS_STOP : longword; // Stop the random number generator.
  477. RESERVED0 : array[0..61] of longword;
  478. EVENTS_VALRDY : longword; // New random number generated and written to VALUE register.
  479. RESERVED1 : array[0..62] of longword;
  480. SHORTS : longword; // Shortcuts for the RNG.
  481. RESERVED2 : array[0..63] of longword;
  482. INTENSET : longword; // Interrupt enable set register
  483. INTENCLR : longword; // Interrupt enable clear register
  484. RESERVED3 : array[0..125] of longword;
  485. CONFIG : longword; // Configuration register.
  486. VALUE : longword; // RNG random number.
  487. RESERVED4 : array[0..699] of longword;
  488. POWER : longword; // Peripheral power control.
  489. end;
  490. TECB_Registers = record // ECB Structure
  491. TASKS_STARTECB : longword; // Start ECB block encrypt. If a crypto operation is running, this
  492. TASKS_STOPECB : longword; // Stop current ECB encryption. If a crypto operation is running,
  493. RESERVED0 : array[0..61] of longword;
  494. EVENTS_ENDECB : longword; // ECB block encrypt complete.
  495. EVENTS_ERRORECB : longword; // ECB block encrypt aborted due to a STOPECB task or due to an
  496. RESERVED1 : array[0..126] of longword;
  497. INTENSET : longword; // Interrupt enable set register.
  498. INTENCLR : longword; // Interrupt enable clear register.
  499. RESERVED2 : array[0..125] of longword;
  500. ECBDATAPTR : longword; // ECB block encrypt memory pointer.
  501. RESERVED3 : array[0..700] of longword;
  502. POWER : longword; // Peripheral power control.
  503. end;
  504. TAAR_Registers = record // AAR Structure
  505. TASKS_START : longword; // Start resolving addresses based on IRKs specified in the IRK
  506. RESERVED0 : longword;
  507. TASKS_STOP : longword; // Stop resolving addresses.
  508. RESERVED1 : array[0..60] of longword;
  509. EVENTS_END : longword; // Address resolution procedure completed.
  510. EVENTS_RESOLVED : longword; // Address resolved.
  511. EVENTS_NOTRESOLVED : longword; // Address not resolved.
  512. RESERVED2 : array[0..125] of longword;
  513. INTENSET : longword; // Interrupt enable set register.
  514. INTENCLR : longword; // Interrupt enable clear register.
  515. RESERVED3 : array[0..60] of longword;
  516. STATUS : longword; // Resolution status.
  517. RESERVED4 : array[0..62] of longword;
  518. ENABLE : longword; // Enable AAR.
  519. NIRK : longword; // Number of Identity root Keys in the IRK data structure.
  520. IRKPTR : longword; // Pointer to the IRK data structure.
  521. RESERVED5 : longword;
  522. ADDRPTR : longword; // Pointer to the resolvable address (6 bytes).
  523. SCRATCHPTR : longword; // Pointer to a scratch data area used for temporary storage during
  524. RESERVED6 : array[0..696] of longword;
  525. POWER : longword; // Peripheral power control.
  526. end;
  527. TCCM_Registers = record // CCM Structure
  528. TASKS_KSGEN : longword; // Start generation of key-stream. This operation will stop by
  529. TASKS_CRYPT : longword; // Start encrypt/decrypt. This operation will stop by itself when
  530. TASKS_STOP : longword; // Stop encrypt/decrypt.
  531. RESERVED0 : array[0..60] of longword;
  532. EVENTS_ENDKSGEN : longword; // Keystream generation completed.
  533. EVENTS_ENDCRYPT : longword; // Encrypt/decrypt completed.
  534. EVENTS_ERROR : longword; // Error happened.
  535. RESERVED1 : array[0..60] of longword;
  536. SHORTS : longword; // Shortcuts for the CCM.
  537. RESERVED2 : array[0..63] of longword;
  538. INTENSET : longword; // Interrupt enable set register.
  539. INTENCLR : longword; // Interrupt enable clear register.
  540. RESERVED3 : array[0..60] of longword;
  541. MICSTATUS : longword; // CCM RX MIC check result.
  542. RESERVED4 : array[0..62] of longword;
  543. ENABLE : longword; // CCM enable.
  544. MODE : longword; // Operation mode.
  545. CNFPTR : longword; // Pointer to a data structure holding AES key and NONCE vector.
  546. INPTR : longword; // Pointer to the input packet.
  547. OUTPTR : longword; // Pointer to the output packet.
  548. SCRATCHPTR : longword; // Pointer to a scratch data area used for temporary storage during
  549. RESERVED5 : array[0..696] of longword;
  550. POWER : longword; // Peripheral power control.
  551. end;
  552. TWDT_Registers = record // WDT Structure
  553. TASKS_START : longword; // Start the watchdog.
  554. RESERVED0 : array[0..62] of longword;
  555. EVENTS_TIMEOUT : longword; // Watchdog timeout.
  556. RESERVED1 : array[0..127] of longword;
  557. INTENSET : longword; // Interrupt enable set register.
  558. INTENCLR : longword; // Interrupt enable clear register.
  559. RESERVED2 : array[0..60] of longword;
  560. RUNSTATUS : longword; // Watchdog running status.
  561. REQSTATUS : longword; // Request status.
  562. RESERVED3 : array[0..62] of longword;
  563. CRV : longword; // Counter reload value in number of 32kiHz clock cycles.
  564. RREN : longword; // Reload request enable.
  565. CONFIG : longword; // Configuration register.
  566. RESERVED4 : array[0..59] of longword;
  567. RR : array[0..7] of longword; // Reload requests registers.
  568. RESERVED5 : array[0..630] of longword;
  569. POWER : longword; // Peripheral power control.
  570. end;
  571. TQDEC_Registers = record // QDEC Structure
  572. TASKS_START : longword; // Start the quadrature decoder.
  573. TASKS_STOP : longword; // Stop the quadrature decoder.
  574. TASKS_READCLRACC : longword; // Transfers the content from ACC registers to ACCREAD registers,
  575. RESERVED0 : array[0..60] of longword;
  576. EVENTS_SAMPLERDY : longword; // A new sample is written to the sample register.
  577. EVENTS_REPORTRDY : longword; // REPORTPER number of samples accumulated in ACC register, and
  578. EVENTS_ACCOF : longword; // ACC or ACCDBL register overflow.
  579. RESERVED1 : array[0..60] of longword;
  580. SHORTS : longword; // Shortcuts for the QDEC.
  581. RESERVED2 : array[0..63] of longword;
  582. INTENSET : longword; // Interrupt enable set register.
  583. INTENCLR : longword; // Interrupt enable clear register.
  584. RESERVED3 : array[0..124] of longword;
  585. ENABLE : longword; // Enable the QDEC.
  586. LEDPOL : longword; // LED output pin polarity.
  587. SAMPLEPER : longword; // Sample period.
  588. SAMPLE : longint; // Motion sample value.
  589. REPORTPER : longword; // Number of samples to generate an EVENT_REPORTRDY.
  590. ACC : longint; // Accumulated valid transitions register.
  591. ACCREAD : longint; // Snapshot of ACC register. Value generated by the TASKS_READCLEACC
  592. PSELLED : longword; // Pin select for LED output.
  593. PSELA : longword; // Pin select for phase A input.
  594. PSELB : longword; // Pin select for phase B input.
  595. DBFEN : longword; // Enable debouncer input filters.
  596. RESERVED4 : array[0..4] of longword;
  597. LEDPRE : longword; // Time LED is switched ON before the sample.
  598. ACCDBL : longword; // Accumulated double (error) transitions register.
  599. ACCDBLREAD : longword; // Snapshot of ACCDBL register. Value generated by the TASKS_READCLEACC
  600. RESERVED5 : array[0..683] of longword;
  601. POWER : longword; // Peripheral power control.
  602. end;
  603. TLPCOMP_Registers = record // LPCOMP Structure
  604. TASKS_START : longword; // Start the comparator.
  605. TASKS_STOP : longword; // Stop the comparator.
  606. TASKS_SAMPLE : longword; // Sample comparator value.
  607. RESERVED0 : array[0..60] of longword;
  608. EVENTS_READY : longword; // LPCOMP is ready and output is valid.
  609. EVENTS_DOWN : longword; // Input voltage crossed the threshold going down.
  610. EVENTS_UP : longword; // Input voltage crossed the threshold going up.
  611. EVENTS_CROSS : longword; // Input voltage crossed the threshold in any direction.
  612. RESERVED1 : array[0..59] of longword;
  613. SHORTS : longword; // Shortcuts for the LPCOMP.
  614. RESERVED2 : array[0..63] of longword;
  615. INTENSET : longword; // Interrupt enable set register.
  616. INTENCLR : longword; // Interrupt enable clear register.
  617. RESERVED3 : array[0..60] of longword;
  618. RESULT : longword; // Result of last compare.
  619. RESERVED4 : array[0..62] of longword;
  620. ENABLE : longword; // Enable the LPCOMP.
  621. PSEL : longword; // Input pin select.
  622. REFSEL : longword; // Reference select.
  623. EXTREFSEL : longword; // External reference select.
  624. RESERVED5 : array[0..3] of longword;
  625. ANADETECT : longword; // Analog detect configuration.
  626. RESERVED6 : array[0..693] of longword;
  627. POWER : longword; // Peripheral power control.
  628. end;
  629. TSWI_Registers = record // SWI Structure
  630. UNUSED : longword; // Unused.
  631. end;
  632. TNVMC_Registers = record // NVMC Structure
  633. RESERVED0 : array[0..255] of longword;
  634. READY : longword; // Ready flag.
  635. RESERVED1 : array[0..63] of longword;
  636. CONFIG : longword; // Configuration register.
  637. ERASEPAGE : longword; // Register for erasing a non-protected non-volatile memory page.
  638. ERASEALL : longword; // Register for erasing all non-volatile user memory.
  639. ERASEPCR0 : longword; // Register for erasing a protected non-volatile memory page.
  640. ERASEUICR : longword; // Register for start erasing User Information Congfiguration Registers.
  641. end;
  642. TPPI_Registers = record // PPI Structure
  643. TASKS_CHG : array[0..3] of TPPI_TASKS_CHG_Registers; // Channel group tasks.
  644. RESERVED0 : array[0..311] of longword;
  645. CHEN : longword; // Channel enable.
  646. CHENSET : longword; // Channel enable set.
  647. CHENCLR : longword; // Channel enable clear.
  648. RESERVED1 : longword;
  649. CH : array[0..15] of TPPI_CH_Registers; // PPI Channel.
  650. RESERVED2 : array[0..155] of longword;
  651. CHG : array[0..3] of longword; // Channel group configuration.
  652. end;
  653. TFICR_Registers = record // FICR Structure
  654. RESERVED0 : array[0..3] of longword;
  655. CODEPAGESIZE : longword; // Code memory page size in bytes.
  656. CODESIZE : longword; // Code memory size in pages.
  657. RESERVED1 : array[0..3] of longword;
  658. CLENR0 : longword; // Length of code region 0 in bytes.
  659. PPFC : longword; // Pre-programmed factory code present.
  660. RESERVED2 : longword;
  661. NUMRAMBLOCK : longword; // Number of individualy controllable RAM blocks.
  662. SIZERAMBLOCK : array[0..3] of longword; // Deprecated array of size of RAM block in bytes. This name is
  663. RESERVED3 : array[0..4] of longword;
  664. CONFIGID : longword; // Configuration identifier.
  665. DEVICEID : array[0..1] of longword; // Device identifier.
  666. RESERVED4 : array[0..5] of longword;
  667. ER : array[0..3] of longword; // Encryption root.
  668. IR : array[0..3] of longword; // Identity root.
  669. DEVICEADDRTYPE : longword; // Device address type.
  670. DEVICEADDR : array[0..1] of longword; // Device address.
  671. OVERRIDEEN : longword; // Radio calibration override enable.
  672. NRF_1MBIT : array[0..4] of longword; // Override values for the OVERRIDEn registers in RADIO for NRF_1Mbit
  673. RESERVED5 : array[0..9] of longword;
  674. BLE_1MBIT : array[0..4] of longword; // Override values for the OVERRIDEn registers in RADIO for BLE_1Mbit
  675. end;
  676. TUICR_Registers = record // UICR Structure
  677. CLENR0 : longword; // Length of code region 0.
  678. RBPCONF : longword; // Readback protection configuration.
  679. XTALFREQ : longword; // Reset value for CLOCK XTALFREQ register.
  680. RESERVED0 : longword;
  681. FWID : longword; // Firmware ID.
  682. NRFFW : array[0..14] of longword; // Reserved for Nordic firmware design.
  683. NRFHW : array[0..11] of longword; // Reserved for Nordic hardware design.
  684. CUSTOMER : array[0..31] of longword; // Reserved for customer.
  685. end;
  686. TGPIO_Registers = record // GPIO Structure
  687. RESERVED0 : array[0..320] of longword;
  688. OUT : longword; // Write GPIO port.
  689. OUTSET : longword; // Set individual bits in GPIO port.
  690. OUTCLR : longword; // Clear individual bits in GPIO port.
  691. &IN : longword; // Read GPIO port.
  692. DIR : longword; // Direction of GPIO pins.
  693. DIRSET : longword; // DIR set register.
  694. DIRCLR : longword; // DIR clear register.
  695. RESERVED1 : array[0..119] of longword;
  696. PIN_CNF : array[0..31] of longword; // Configuration of GPIO pins.
  697. end;
  698. const
  699. POWER_BASE = $40000000;
  700. CLOCK_BASE = $40000000;
  701. MPU_BASE = $40000000;
  702. RADIO_BASE = $40001000;
  703. UART0_BASE = $40002000;
  704. SPI0_BASE = $40003000;
  705. TWI0_BASE = $40003000;
  706. SPI1_BASE = $40004000;
  707. TWI1_BASE = $40004000;
  708. SPIS1_BASE = $40004000;
  709. GPIOTE_BASE = $40006000;
  710. ADC_BASE = $40007000;
  711. TIMER0_BASE = $40008000;
  712. TIMER1_BASE = $40009000;
  713. TIMER2_BASE = $4000A000;
  714. RTC0_BASE = $4000B000;
  715. TEMP_BASE = $4000C000;
  716. RNG_BASE = $4000D000;
  717. ECB_BASE = $4000E000;
  718. AAR_BASE = $4000F000;
  719. CCM_BASE = $4000F000;
  720. WDT_BASE = $40010000;
  721. RTC1_BASE = $40011000;
  722. QDEC_BASE = $40012000;
  723. LPCOMP_BASE = $40013000;
  724. SWI_BASE = $40014000;
  725. NVMC_BASE = $4001E000;
  726. PPI_BASE = $4001F000;
  727. FICR_BASE = $10000000;
  728. UICR_BASE = $10001000;
  729. GPIO_BASE = $50000000;
  730. var
  731. POWER : TPOWER_Registers absolute POWER_BASE;
  732. CLOCK : TCLOCK_Registers absolute CLOCK_BASE;
  733. MPU : TMPU_Registers absolute MPU_BASE;
  734. RADIO : TRADIO_Registers absolute RADIO_BASE;
  735. UART0 : TUART_Registers absolute UART0_BASE;
  736. SPI0 : TSPI_Registers absolute SPI0_BASE;
  737. TWI0 : TTWI_Registers absolute TWI0_BASE;
  738. SPI1 : TSPI_Registers absolute SPI1_BASE;
  739. TWI1 : TTWI_Registers absolute TWI1_BASE;
  740. SPIS1 : TSPIS_Registers absolute SPIS1_BASE;
  741. GPIOTE : TGPIOTE_Registers absolute GPIOTE_BASE;
  742. ADC : TADC_Registers absolute ADC_BASE;
  743. TIMER0 : TTIMER_Registers absolute TIMER0_BASE;
  744. TIMER1 : TTIMER_Registers absolute TIMER1_BASE;
  745. TIMER2 : TTIMER_Registers absolute TIMER2_BASE;
  746. RTC0 : TRTC_Registers absolute RTC0_BASE;
  747. TEMP : TTEMP_Registers absolute TEMP_BASE;
  748. RNG : TRNG_Registers absolute RNG_BASE;
  749. ECB : TECB_Registers absolute ECB_BASE;
  750. AAR : TAAR_Registers absolute AAR_BASE;
  751. CCM : TCCM_Registers absolute CCM_BASE;
  752. WDT : TWDT_Registers absolute WDT_BASE;
  753. RTC1 : TRTC_Registers absolute RTC1_BASE;
  754. QDEC : TQDEC_Registers absolute QDEC_BASE;
  755. LPCOMP : TLPCOMP_Registers absolute LPCOMP_BASE;
  756. SWI : TSWI_Registers absolute SWI_BASE;
  757. NVMC : TNVMC_Registers absolute NVMC_BASE;
  758. PPI : TPPI_Registers absolute PPI_BASE;
  759. FICR : TFICR_Registers absolute FICR_BASE;
  760. UICR : TUICR_Registers absolute UICR_BASE;
  761. GPIO : TGPIO_Registers absolute GPIO_BASE;
  762. implementation
  763. procedure Reset_interrupt; external name 'Reset_interrupt';
  764. procedure NonMaskableInt_interrupt; external name 'NonMaskableInt_interrupt';
  765. procedure HardFault_interrupt; external name 'HardFault_interrupt';
  766. procedure SVCall_interrupt; external name 'SVCall_interrupt';
  767. procedure DebugMonitor_interrupt; external name 'DebugMonitor_interrupt';
  768. procedure PendSV_interrupt; external name 'PendSV_interrupt';
  769. procedure SysTick_interrupt; external name 'SysTick_interrupt';
  770. procedure POWER_CLOCK_interrupt; external name 'POWER_CLOCK_interrupt';
  771. procedure RADIO_interrupt; external name 'RADIO_interrupt';
  772. procedure UART0_interrupt; external name 'UART0_interrupt';
  773. procedure SPI0_TWI0_interrupt; external name 'SPI0_TWI0_interrupt';
  774. procedure SPI1_TWI1_interrupt; external name 'SPI1_TWI1_interrupt';
  775. procedure GPIOTE_interrupt; external name 'GPIOTE_interrupt';
  776. procedure ADC_interrupt; external name 'ADC_interrupt';
  777. procedure TIMER0_interrupt; external name 'TIMER0_interrupt';
  778. procedure TIMER1_interrupt; external name 'TIMER1_interrupt';
  779. procedure TIMER2_interrupt; external name 'TIMER2_interrupt';
  780. procedure RTC0_interrupt; external name 'RTC0_interrupt';
  781. procedure TEMP_interrupt; external name 'TEMP_interrupt';
  782. procedure RNG_interrupt; external name 'RNG_interrupt';
  783. procedure ECB_interrupt; external name 'ECB_interrupt';
  784. procedure CCM_AAR_interrupt; external name 'CCM_AAR_interrupt';
  785. procedure WDT_interrupt; external name 'WDT_interrupt';
  786. procedure RTC1_interrupt; external name 'RTC1_interrupt';
  787. procedure QDEC_interrupt; external name 'QDEC_interrupt';
  788. procedure LPCOMP_interrupt; external name 'LPCOMP_interrupt';
  789. procedure SWI0_interrupt; external name 'SWI0_interrupt';
  790. procedure SWI1_interrupt; external name 'SWI1_interrupt';
  791. procedure SWI2_interrupt; external name 'SWI2_interrupt';
  792. procedure SWI3_interrupt; external name 'SWI3_interrupt';
  793. procedure SWI4_interrupt; external name 'SWI4_interrupt';
  794. procedure SWI5_interrupt; external name 'SWI5_interrupt';
  795. {$i cortexm0_start.inc}
  796. procedure Vectors; assembler; nostackframe;
  797. label interrupt_vectors;
  798. asm
  799. .section ".init.interrupt_vectors"
  800. interrupt_vectors:
  801. .long _stack_top
  802. .long Startup
  803. .long Reset_interrupt
  804. .long NonMaskableInt_interrupt
  805. .long HardFault_interrupt
  806. .long 0
  807. .long 0
  808. .long 0
  809. .long 0
  810. .long 0
  811. .long 0
  812. .long SVCall_interrupt
  813. .long DebugMonitor_interrupt
  814. .long 0
  815. .long PendSV_interrupt
  816. .long SysTick_interrupt
  817. .long POWER_CLOCK_interrupt
  818. .long RADIO_interrupt
  819. .long UART0_interrupt
  820. .long SPI0_TWI0_interrupt
  821. .long SPI1_TWI1_interrupt
  822. .long 0
  823. .long GPIOTE_interrupt
  824. .long ADC_interrupt
  825. .long TIMER0_interrupt
  826. .long TIMER1_interrupt
  827. .long TIMER2_interrupt
  828. .long RTC0_interrupt
  829. .long TEMP_interrupt
  830. .long RNG_interrupt
  831. .long ECB_interrupt
  832. .long CCM_AAR_interrupt
  833. .long WDT_interrupt
  834. .long RTC1_interrupt
  835. .long QDEC_interrupt
  836. .long LPCOMP_interrupt
  837. .long SWI0_interrupt
  838. .long SWI1_interrupt
  839. .long SWI2_interrupt
  840. .long SWI3_interrupt
  841. .long SWI4_interrupt
  842. .long SWI5_interrupt
  843. .weak Reset_interrupt
  844. .weak NonMaskableInt_interrupt
  845. .weak HardFault_interrupt
  846. .weak SVCall_interrupt
  847. .weak DebugMonitor_interrupt
  848. .weak PendSV_interrupt
  849. .weak SysTick_interrupt
  850. .weak POWER_CLOCK_interrupt
  851. .weak RADIO_interrupt
  852. .weak UART0_interrupt
  853. .weak SPI0_TWI0_interrupt
  854. .weak SPI1_TWI1_interrupt
  855. .weak GPIOTE_interrupt
  856. .weak ADC_interrupt
  857. .weak TIMER0_interrupt
  858. .weak TIMER1_interrupt
  859. .weak TIMER2_interrupt
  860. .weak RTC0_interrupt
  861. .weak TEMP_interrupt
  862. .weak RNG_interrupt
  863. .weak ECB_interrupt
  864. .weak CCM_AAR_interrupt
  865. .weak WDT_interrupt
  866. .weak RTC1_interrupt
  867. .weak QDEC_interrupt
  868. .weak LPCOMP_interrupt
  869. .weak SWI0_interrupt
  870. .weak SWI1_interrupt
  871. .weak SWI2_interrupt
  872. .weak SWI3_interrupt
  873. .weak SWI4_interrupt
  874. .weak SWI5_interrupt
  875. .set Reset_interrupt, HaltProc
  876. .set NonMaskableInt_interrupt, HaltProc
  877. .set HardFault_interrupt, HaltProc
  878. .set SVCall_interrupt, HaltProc
  879. .set DebugMonitor_interrupt, HaltProc
  880. .set PendSV_interrupt, HaltProc
  881. .set SysTick_interrupt, HaltProc
  882. .set POWER_CLOCK_interrupt, HaltProc
  883. .set RADIO_interrupt, HaltProc
  884. .set UART0_interrupt, HaltProc
  885. .set SPI0_TWI0_interrupt, HaltProc
  886. .set SPI1_TWI1_interrupt, HaltProc
  887. .set GPIOTE_interrupt, HaltProc
  888. .set ADC_interrupt, HaltProc
  889. .set TIMER0_interrupt, HaltProc
  890. .set TIMER1_interrupt, HaltProc
  891. .set TIMER2_interrupt, HaltProc
  892. .set RTC0_interrupt, HaltProc
  893. .set TEMP_interrupt, HaltProc
  894. .set RNG_interrupt, HaltProc
  895. .set ECB_interrupt, HaltProc
  896. .set CCM_AAR_interrupt, HaltProc
  897. .set WDT_interrupt, HaltProc
  898. .set RTC1_interrupt, HaltProc
  899. .set QDEC_interrupt, HaltProc
  900. .set LPCOMP_interrupt, HaltProc
  901. .set SWI0_interrupt, HaltProc
  902. .set SWI1_interrupt, HaltProc
  903. .set SWI2_interrupt, HaltProc
  904. .set SWI3_interrupt, HaltProc
  905. .set SWI4_interrupt, HaltProc
  906. .set SWI5_interrupt, HaltProc
  907. .text
  908. end;
  909. end.