startup_mimxrt1021.c 47 KB

123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960616263646566676869707172737475767778798081828384858687888990919293949596979899100101102103104105106107108109110111112113114115116117118119120121122123124125126127128129130131132133134135136137138139140141142143144145146147148149150151152153154155156157158159160161162163164165166167168169170171172173174175176177178179180181182183184185186187188189190191192193194195196197198199200201202203204205206207208209210211212213214215216217218219220221222223224225226227228229230231232233234235236237238239240241242243244245246247248249250251252253254255256257258259260261262263264265266267268269270271272273274275276277278279280281282283284285286287288289290291292293294295296297298299300301302303304305306307308309310311312313314315316317318319320321322323324325326327328329330331332333334335336337338339340341342343344345346347348349350351352353354355356357358359360361362363364365366367368369370371372373374375376377378379380381382383384385386387388389390391392393394395396397398399400401402403404405406407408409410411412413414415416417418419420421422423424425426427428429430431432433434435436437438439440441442443444445446447448449450451452453454455456457458459460461462463464465466467468469470471472473474475476477478479480481482483484485486487488489490491492493494495496497498499500501502503504505506507508509510511512513514515516517518519520521522523524525526527528529530531532533534535536537538539540541542543544545546547548549550551552553554555556557558559560561562563564565566567568569570571572573574575576577578579580581582583584585586587588589590591592593594595596597598599600601602603604605606607608609610611612613614615616617618619620621622623624625626627628629630631632633634635636637638639640641642643644645646647648649650651652653654655656657658659660661662663664665666667668669670671672673674675676677678679680681682683684685686687688689690691692693694695696697698699700701702703704705706707708709710711712713714715716717718719720721722723724725726727728729730731732733734735736737738739740741742743744745746747748749750751752753754755756757758759760761762763764765766767768769770771772773774775776777778779780781782783784785786787788789790791792793794795796797798799800801802803804805806807808809810811812813814815816817818819820821822823824825826827828829830831832833834835836837838839840841842843844845846847848849850851852853854855856857858859860861862863864865866867868869870871872873874875876877878879880881882883884885886887888889890891892893894895896897898899900901902903904905906907908909910911912913914915916917918919920921922923924925926927928929930931932933934935936937938939940941942943944945946947948949950951952953954955956957958959960961962963964965966967968969970971972973974975976977978979980981982983984985986987988989990991992993994995996997998999100010011002100310041005100610071008100910101011101210131014101510161017101810191020102110221023102410251026102710281029103010311032103310341035103610371038103910401041104210431044104510461047104810491050105110521053105410551056105710581059106010611062106310641065106610671068106910701071107210731074107510761077107810791080108110821083108410851086108710881089109010911092109310941095109610971098109911001101110211031104110511061107110811091110111111121113111411151116111711181119112011211122112311241125112611271128112911301131113211331134113511361137113811391140114111421143114411451146114711481149115011511152115311541155115611571158115911601161116211631164116511661167116811691170117111721173117411751176117711781179118011811182118311841185118611871188118911901191119211931194119511961197119811991200120112021203120412051206120712081209121012111212121312141215121612171218121912201221122212231224122512261227122812291230123112321233123412351236123712381239124012411242124312441245124612471248124912501251125212531254125512561257125812591260126112621263126412651266126712681269127012711272127312741275127612771278127912801281128212831284128512861287128812891290129112921293129412951296129712981299130013011302130313041305130613071308130913101311131213131314131513161317
  1. //*****************************************************************************
  2. // MIMXRT1021 startup code for use with MCUXpresso IDE
  3. //
  4. // Version : 150621
  5. //*****************************************************************************
  6. //
  7. // Copyright 2016-2021 NXP
  8. // All rights reserved.
  9. //
  10. // SPDX-License-Identifier: BSD-3-Clause
  11. //*****************************************************************************
  12. #if defined (DEBUG)
  13. #pragma GCC push_options
  14. #pragma GCC optimize ("Og")
  15. #endif // (DEBUG)
  16. #if defined (__cplusplus)
  17. #ifdef __REDLIB__
  18. #error Redlib does not support C++
  19. #else
  20. //*****************************************************************************
  21. //
  22. // The entry point for the C++ library startup
  23. //
  24. //*****************************************************************************
  25. extern "C" {
  26. extern void __libc_init_array(void);
  27. }
  28. #endif
  29. #endif
  30. #define WEAK __attribute__ ((weak))
  31. #define WEAK_AV __attribute__ ((weak, section(".after_vectors")))
  32. #define ALIAS(f) __attribute__ ((weak, alias (#f)))
  33. //*****************************************************************************
  34. #if defined (__cplusplus)
  35. extern "C" {
  36. #endif
  37. //*****************************************************************************
  38. // Variable to store CRP value in. Will be placed automatically
  39. // by the linker when "Enable Code Read Protect" selected.
  40. // See crp.h header for more information
  41. //*****************************************************************************
  42. //*****************************************************************************
  43. // Declaration of external SystemInit function
  44. //*****************************************************************************
  45. #if defined (__USE_CMSIS)
  46. extern void SystemInit(void);
  47. #endif // (__USE_CMSIS)
  48. //*****************************************************************************
  49. // Forward declaration of the core exception handlers.
  50. // When the application defines a handler (with the same name), this will
  51. // automatically take precedence over these weak definitions.
  52. // If your application is a C++ one, then any interrupt handlers defined
  53. // in C++ files within in your main application will need to have C linkage
  54. // rather than C++ linkage. To do this, make sure that you are using extern "C"
  55. // { .... } around the interrupt handler within your main application code.
  56. //*****************************************************************************
  57. void ResetISR(void);
  58. WEAK void NMI_Handler(void);
  59. WEAK void HardFault_Handler(void);
  60. WEAK void MemManage_Handler(void);
  61. WEAK void BusFault_Handler(void);
  62. WEAK void UsageFault_Handler(void);
  63. WEAK void SVC_Handler(void);
  64. WEAK void DebugMon_Handler(void);
  65. WEAK void PendSV_Handler(void);
  66. WEAK void SysTick_Handler(void);
  67. WEAK void IntDefaultHandler(void);
  68. //*****************************************************************************
  69. // Forward declaration of the application IRQ handlers. When the application
  70. // defines a handler (with the same name), this will automatically take
  71. // precedence over weak definitions below
  72. //*****************************************************************************
  73. WEAK void DMA0_DMA16_IRQHandler(void);
  74. WEAK void DMA1_DMA17_IRQHandler(void);
  75. WEAK void DMA2_DMA18_IRQHandler(void);
  76. WEAK void DMA3_DMA19_IRQHandler(void);
  77. WEAK void DMA4_DMA20_IRQHandler(void);
  78. WEAK void DMA5_DMA21_IRQHandler(void);
  79. WEAK void DMA6_DMA22_IRQHandler(void);
  80. WEAK void DMA7_DMA23_IRQHandler(void);
  81. WEAK void DMA8_DMA24_IRQHandler(void);
  82. WEAK void DMA9_DMA25_IRQHandler(void);
  83. WEAK void DMA10_DMA26_IRQHandler(void);
  84. WEAK void DMA11_DMA27_IRQHandler(void);
  85. WEAK void DMA12_DMA28_IRQHandler(void);
  86. WEAK void DMA13_DMA29_IRQHandler(void);
  87. WEAK void DMA14_DMA30_IRQHandler(void);
  88. WEAK void DMA15_DMA31_IRQHandler(void);
  89. WEAK void DMA_ERROR_IRQHandler(void);
  90. WEAK void CTI0_ERROR_IRQHandler(void);
  91. WEAK void CTI1_ERROR_IRQHandler(void);
  92. WEAK void CORE_IRQHandler(void);
  93. WEAK void LPUART1_IRQHandler(void);
  94. WEAK void LPUART2_IRQHandler(void);
  95. WEAK void LPUART3_IRQHandler(void);
  96. WEAK void LPUART4_IRQHandler(void);
  97. WEAK void LPUART5_IRQHandler(void);
  98. WEAK void LPUART6_IRQHandler(void);
  99. WEAK void LPUART7_IRQHandler(void);
  100. WEAK void LPUART8_IRQHandler(void);
  101. WEAK void LPI2C1_IRQHandler(void);
  102. WEAK void LPI2C2_IRQHandler(void);
  103. WEAK void LPI2C3_IRQHandler(void);
  104. WEAK void LPI2C4_IRQHandler(void);
  105. WEAK void LPSPI1_IRQHandler(void);
  106. WEAK void LPSPI2_IRQHandler(void);
  107. WEAK void LPSPI3_IRQHandler(void);
  108. WEAK void LPSPI4_IRQHandler(void);
  109. WEAK void CAN1_IRQHandler(void);
  110. WEAK void CAN2_IRQHandler(void);
  111. WEAK void FLEXRAM_IRQHandler(void);
  112. WEAK void KPP_IRQHandler(void);
  113. WEAK void Reserved56_IRQHandler(void);
  114. WEAK void GPR_IRQ_IRQHandler(void);
  115. WEAK void Reserved58_IRQHandler(void);
  116. WEAK void Reserved59_IRQHandler(void);
  117. WEAK void Reserved60_IRQHandler(void);
  118. WEAK void WDOG2_IRQHandler(void);
  119. WEAK void SNVS_HP_WRAPPER_IRQHandler(void);
  120. WEAK void SNVS_HP_WRAPPER_TZ_IRQHandler(void);
  121. WEAK void SNVS_LP_HP_WRAPPER_IRQHandler(void);
  122. WEAK void CSU_IRQHandler(void);
  123. WEAK void DCP_IRQHandler(void);
  124. WEAK void DCP_VMI_IRQHandler(void);
  125. WEAK void Reserved68_IRQHandler(void);
  126. WEAK void TRNG_IRQHandler(void);
  127. WEAK void Reserved70_IRQHandler(void);
  128. WEAK void BEE_IRQHandler(void);
  129. WEAK void SAI1_IRQHandler(void);
  130. WEAK void SAI2_IRQHandler(void);
  131. WEAK void SAI3_RX_IRQHandler(void);
  132. WEAK void SAI3_TX_IRQHandler(void);
  133. WEAK void SPDIF_IRQHandler(void);
  134. WEAK void PMU_IRQHandler(void);
  135. WEAK void Reserved78_IRQHandler(void);
  136. WEAK void TEMP_LOW_HIGH_IRQHandler(void);
  137. WEAK void TEMP_PANIC_IRQHandler(void);
  138. WEAK void USB_PHY_IRQHandler(void);
  139. WEAK void Reserved82_IRQHandler(void);
  140. WEAK void ADC1_IRQHandler(void);
  141. WEAK void ADC2_IRQHandler(void);
  142. WEAK void DCDC_IRQHandler(void);
  143. WEAK void Reserved86_IRQHandler(void);
  144. WEAK void Reserved87_IRQHandler(void);
  145. WEAK void GPIO1_INT0_IRQHandler(void);
  146. WEAK void GPIO1_INT1_IRQHandler(void);
  147. WEAK void GPIO1_INT2_IRQHandler(void);
  148. WEAK void GPIO1_INT3_IRQHandler(void);
  149. WEAK void GPIO1_INT4_IRQHandler(void);
  150. WEAK void GPIO1_INT5_IRQHandler(void);
  151. WEAK void GPIO1_INT6_IRQHandler(void);
  152. WEAK void GPIO1_INT7_IRQHandler(void);
  153. WEAK void GPIO1_Combined_0_15_IRQHandler(void);
  154. WEAK void GPIO1_Combined_16_31_IRQHandler(void);
  155. WEAK void GPIO2_Combined_0_15_IRQHandler(void);
  156. WEAK void GPIO2_Combined_16_31_IRQHandler(void);
  157. WEAK void GPIO3_Combined_0_15_IRQHandler(void);
  158. WEAK void GPIO3_Combined_16_31_IRQHandler(void);
  159. WEAK void Reserved102_IRQHandler(void);
  160. WEAK void Reserved103_IRQHandler(void);
  161. WEAK void GPIO5_Combined_0_15_IRQHandler(void);
  162. WEAK void GPIO5_Combined_16_31_IRQHandler(void);
  163. WEAK void FLEXIO1_IRQHandler(void);
  164. WEAK void Reserved107_IRQHandler(void);
  165. WEAK void WDOG1_IRQHandler(void);
  166. WEAK void RTWDOG_IRQHandler(void);
  167. WEAK void EWM_IRQHandler(void);
  168. WEAK void CCM_1_IRQHandler(void);
  169. WEAK void CCM_2_IRQHandler(void);
  170. WEAK void GPC_IRQHandler(void);
  171. WEAK void SRC_IRQHandler(void);
  172. WEAK void Reserved115_IRQHandler(void);
  173. WEAK void GPT1_IRQHandler(void);
  174. WEAK void GPT2_IRQHandler(void);
  175. WEAK void PWM1_0_IRQHandler(void);
  176. WEAK void PWM1_1_IRQHandler(void);
  177. WEAK void PWM1_2_IRQHandler(void);
  178. WEAK void PWM1_3_IRQHandler(void);
  179. WEAK void PWM1_FAULT_IRQHandler(void);
  180. WEAK void Reserved123_IRQHandler(void);
  181. WEAK void FLEXSPI_IRQHandler(void);
  182. WEAK void SEMC_IRQHandler(void);
  183. WEAK void USDHC1_IRQHandler(void);
  184. WEAK void USDHC2_IRQHandler(void);
  185. WEAK void Reserved128_IRQHandler(void);
  186. WEAK void USB_OTG1_IRQHandler(void);
  187. WEAK void ENET_IRQHandler(void);
  188. WEAK void ENET_1588_Timer_IRQHandler(void);
  189. WEAK void XBAR1_IRQ_0_1_IRQHandler(void);
  190. WEAK void XBAR1_IRQ_2_3_IRQHandler(void);
  191. WEAK void ADC_ETC_IRQ0_IRQHandler(void);
  192. WEAK void ADC_ETC_IRQ1_IRQHandler(void);
  193. WEAK void ADC_ETC_IRQ2_IRQHandler(void);
  194. WEAK void ADC_ETC_ERROR_IRQ_IRQHandler(void);
  195. WEAK void PIT_IRQHandler(void);
  196. WEAK void ACMP1_IRQHandler(void);
  197. WEAK void ACMP2_IRQHandler(void);
  198. WEAK void ACMP3_IRQHandler(void);
  199. WEAK void ACMP4_IRQHandler(void);
  200. WEAK void Reserved143_IRQHandler(void);
  201. WEAK void Reserved144_IRQHandler(void);
  202. WEAK void ENC1_IRQHandler(void);
  203. WEAK void ENC2_IRQHandler(void);
  204. WEAK void Reserved147_IRQHandler(void);
  205. WEAK void Reserved148_IRQHandler(void);
  206. WEAK void TMR1_IRQHandler(void);
  207. WEAK void TMR2_IRQHandler(void);
  208. WEAK void Reserved151_IRQHandler(void);
  209. WEAK void Reserved152_IRQHandler(void);
  210. WEAK void PWM2_0_IRQHandler(void);
  211. WEAK void PWM2_1_IRQHandler(void);
  212. WEAK void PWM2_2_IRQHandler(void);
  213. WEAK void PWM2_3_IRQHandler(void);
  214. WEAK void PWM2_FAULT_IRQHandler(void);
  215. //*****************************************************************************
  216. // Forward declaration of the driver IRQ handlers. These are aliased
  217. // to the IntDefaultHandler, which is a 'forever' loop. When the driver
  218. // defines a handler (with the same name), this will automatically take
  219. // precedence over these weak definitions
  220. //*****************************************************************************
  221. void DMA0_DMA16_DriverIRQHandler(void) ALIAS(IntDefaultHandler);
  222. void DMA1_DMA17_DriverIRQHandler(void) ALIAS(IntDefaultHandler);
  223. void DMA2_DMA18_DriverIRQHandler(void) ALIAS(IntDefaultHandler);
  224. void DMA3_DMA19_DriverIRQHandler(void) ALIAS(IntDefaultHandler);
  225. void DMA4_DMA20_DriverIRQHandler(void) ALIAS(IntDefaultHandler);
  226. void DMA5_DMA21_DriverIRQHandler(void) ALIAS(IntDefaultHandler);
  227. void DMA6_DMA22_DriverIRQHandler(void) ALIAS(IntDefaultHandler);
  228. void DMA7_DMA23_DriverIRQHandler(void) ALIAS(IntDefaultHandler);
  229. void DMA8_DMA24_DriverIRQHandler(void) ALIAS(IntDefaultHandler);
  230. void DMA9_DMA25_DriverIRQHandler(void) ALIAS(IntDefaultHandler);
  231. void DMA10_DMA26_DriverIRQHandler(void) ALIAS(IntDefaultHandler);
  232. void DMA11_DMA27_DriverIRQHandler(void) ALIAS(IntDefaultHandler);
  233. void DMA12_DMA28_DriverIRQHandler(void) ALIAS(IntDefaultHandler);
  234. void DMA13_DMA29_DriverIRQHandler(void) ALIAS(IntDefaultHandler);
  235. void DMA14_DMA30_DriverIRQHandler(void) ALIAS(IntDefaultHandler);
  236. void DMA15_DMA31_DriverIRQHandler(void) ALIAS(IntDefaultHandler);
  237. void DMA_ERROR_DriverIRQHandler(void) ALIAS(IntDefaultHandler);
  238. void CTI0_ERROR_DriverIRQHandler(void) ALIAS(IntDefaultHandler);
  239. void CTI1_ERROR_DriverIRQHandler(void) ALIAS(IntDefaultHandler);
  240. void CORE_DriverIRQHandler(void) ALIAS(IntDefaultHandler);
  241. void LPUART1_DriverIRQHandler(void) ALIAS(IntDefaultHandler);
  242. void LPUART2_DriverIRQHandler(void) ALIAS(IntDefaultHandler);
  243. void LPUART3_DriverIRQHandler(void) ALIAS(IntDefaultHandler);
  244. void LPUART4_DriverIRQHandler(void) ALIAS(IntDefaultHandler);
  245. void LPUART5_DriverIRQHandler(void) ALIAS(IntDefaultHandler);
  246. void LPUART6_DriverIRQHandler(void) ALIAS(IntDefaultHandler);
  247. void LPUART7_DriverIRQHandler(void) ALIAS(IntDefaultHandler);
  248. void LPUART8_DriverIRQHandler(void) ALIAS(IntDefaultHandler);
  249. void LPI2C1_DriverIRQHandler(void) ALIAS(IntDefaultHandler);
  250. void LPI2C2_DriverIRQHandler(void) ALIAS(IntDefaultHandler);
  251. void LPI2C3_DriverIRQHandler(void) ALIAS(IntDefaultHandler);
  252. void LPI2C4_DriverIRQHandler(void) ALIAS(IntDefaultHandler);
  253. void LPSPI1_DriverIRQHandler(void) ALIAS(IntDefaultHandler);
  254. void LPSPI2_DriverIRQHandler(void) ALIAS(IntDefaultHandler);
  255. void LPSPI3_DriverIRQHandler(void) ALIAS(IntDefaultHandler);
  256. void LPSPI4_DriverIRQHandler(void) ALIAS(IntDefaultHandler);
  257. void CAN1_DriverIRQHandler(void) ALIAS(IntDefaultHandler);
  258. void CAN2_DriverIRQHandler(void) ALIAS(IntDefaultHandler);
  259. void FLEXRAM_DriverIRQHandler(void) ALIAS(IntDefaultHandler);
  260. void KPP_DriverIRQHandler(void) ALIAS(IntDefaultHandler);
  261. void Reserved56_DriverIRQHandler(void) ALIAS(IntDefaultHandler);
  262. void GPR_IRQ_DriverIRQHandler(void) ALIAS(IntDefaultHandler);
  263. void Reserved58_DriverIRQHandler(void) ALIAS(IntDefaultHandler);
  264. void Reserved59_DriverIRQHandler(void) ALIAS(IntDefaultHandler);
  265. void Reserved60_DriverIRQHandler(void) ALIAS(IntDefaultHandler);
  266. void WDOG2_DriverIRQHandler(void) ALIAS(IntDefaultHandler);
  267. void SNVS_HP_WRAPPER_DriverIRQHandler(void) ALIAS(IntDefaultHandler);
  268. void SNVS_HP_WRAPPER_TZ_DriverIRQHandler(void) ALIAS(IntDefaultHandler);
  269. void SNVS_LP_HP_WRAPPER_DriverIRQHandler(void) ALIAS(IntDefaultHandler);
  270. void CSU_DriverIRQHandler(void) ALIAS(IntDefaultHandler);
  271. void DCP_DriverIRQHandler(void) ALIAS(IntDefaultHandler);
  272. void DCP_VMI_DriverIRQHandler(void) ALIAS(IntDefaultHandler);
  273. void Reserved68_DriverIRQHandler(void) ALIAS(IntDefaultHandler);
  274. void TRNG_DriverIRQHandler(void) ALIAS(IntDefaultHandler);
  275. void Reserved70_DriverIRQHandler(void) ALIAS(IntDefaultHandler);
  276. void BEE_DriverIRQHandler(void) ALIAS(IntDefaultHandler);
  277. void SAI1_DriverIRQHandler(void) ALIAS(IntDefaultHandler);
  278. void SAI2_DriverIRQHandler(void) ALIAS(IntDefaultHandler);
  279. void SAI3_RX_DriverIRQHandler(void) ALIAS(IntDefaultHandler);
  280. void SAI3_TX_DriverIRQHandler(void) ALIAS(IntDefaultHandler);
  281. void SPDIF_DriverIRQHandler(void) ALIAS(IntDefaultHandler);
  282. void PMU_DriverIRQHandler(void) ALIAS(IntDefaultHandler);
  283. void Reserved78_DriverIRQHandler(void) ALIAS(IntDefaultHandler);
  284. void TEMP_LOW_HIGH_DriverIRQHandler(void) ALIAS(IntDefaultHandler);
  285. void TEMP_PANIC_DriverIRQHandler(void) ALIAS(IntDefaultHandler);
  286. void USB_PHY_DriverIRQHandler(void) ALIAS(IntDefaultHandler);
  287. void Reserved82_DriverIRQHandler(void) ALIAS(IntDefaultHandler);
  288. void ADC1_DriverIRQHandler(void) ALIAS(IntDefaultHandler);
  289. void ADC2_DriverIRQHandler(void) ALIAS(IntDefaultHandler);
  290. void DCDC_DriverIRQHandler(void) ALIAS(IntDefaultHandler);
  291. void Reserved86_DriverIRQHandler(void) ALIAS(IntDefaultHandler);
  292. void Reserved87_DriverIRQHandler(void) ALIAS(IntDefaultHandler);
  293. void GPIO1_INT0_DriverIRQHandler(void) ALIAS(IntDefaultHandler);
  294. void GPIO1_INT1_DriverIRQHandler(void) ALIAS(IntDefaultHandler);
  295. void GPIO1_INT2_DriverIRQHandler(void) ALIAS(IntDefaultHandler);
  296. void GPIO1_INT3_DriverIRQHandler(void) ALIAS(IntDefaultHandler);
  297. void GPIO1_INT4_DriverIRQHandler(void) ALIAS(IntDefaultHandler);
  298. void GPIO1_INT5_DriverIRQHandler(void) ALIAS(IntDefaultHandler);
  299. void GPIO1_INT6_DriverIRQHandler(void) ALIAS(IntDefaultHandler);
  300. void GPIO1_INT7_DriverIRQHandler(void) ALIAS(IntDefaultHandler);
  301. void GPIO1_Combined_0_15_DriverIRQHandler(void) ALIAS(IntDefaultHandler);
  302. void GPIO1_Combined_16_31_DriverIRQHandler(void) ALIAS(IntDefaultHandler);
  303. void GPIO2_Combined_0_15_DriverIRQHandler(void) ALIAS(IntDefaultHandler);
  304. void GPIO2_Combined_16_31_DriverIRQHandler(void) ALIAS(IntDefaultHandler);
  305. void GPIO3_Combined_0_15_DriverIRQHandler(void) ALIAS(IntDefaultHandler);
  306. void GPIO3_Combined_16_31_DriverIRQHandler(void) ALIAS(IntDefaultHandler);
  307. void Reserved102_DriverIRQHandler(void) ALIAS(IntDefaultHandler);
  308. void Reserved103_DriverIRQHandler(void) ALIAS(IntDefaultHandler);
  309. void GPIO5_Combined_0_15_DriverIRQHandler(void) ALIAS(IntDefaultHandler);
  310. void GPIO5_Combined_16_31_DriverIRQHandler(void) ALIAS(IntDefaultHandler);
  311. void FLEXIO1_DriverIRQHandler(void) ALIAS(IntDefaultHandler);
  312. void Reserved107_DriverIRQHandler(void) ALIAS(IntDefaultHandler);
  313. void WDOG1_DriverIRQHandler(void) ALIAS(IntDefaultHandler);
  314. void RTWDOG_DriverIRQHandler(void) ALIAS(IntDefaultHandler);
  315. void EWM_DriverIRQHandler(void) ALIAS(IntDefaultHandler);
  316. void CCM_1_DriverIRQHandler(void) ALIAS(IntDefaultHandler);
  317. void CCM_2_DriverIRQHandler(void) ALIAS(IntDefaultHandler);
  318. void GPC_DriverIRQHandler(void) ALIAS(IntDefaultHandler);
  319. void SRC_DriverIRQHandler(void) ALIAS(IntDefaultHandler);
  320. void Reserved115_DriverIRQHandler(void) ALIAS(IntDefaultHandler);
  321. void GPT1_DriverIRQHandler(void) ALIAS(IntDefaultHandler);
  322. void GPT2_DriverIRQHandler(void) ALIAS(IntDefaultHandler);
  323. void PWM1_0_DriverIRQHandler(void) ALIAS(IntDefaultHandler);
  324. void PWM1_1_DriverIRQHandler(void) ALIAS(IntDefaultHandler);
  325. void PWM1_2_DriverIRQHandler(void) ALIAS(IntDefaultHandler);
  326. void PWM1_3_DriverIRQHandler(void) ALIAS(IntDefaultHandler);
  327. void PWM1_FAULT_DriverIRQHandler(void) ALIAS(IntDefaultHandler);
  328. void Reserved123_DriverIRQHandler(void) ALIAS(IntDefaultHandler);
  329. void FLEXSPI_DriverIRQHandler(void) ALIAS(IntDefaultHandler);
  330. void SEMC_DriverIRQHandler(void) ALIAS(IntDefaultHandler);
  331. void USDHC1_DriverIRQHandler(void) ALIAS(IntDefaultHandler);
  332. void USDHC2_DriverIRQHandler(void) ALIAS(IntDefaultHandler);
  333. void Reserved128_DriverIRQHandler(void) ALIAS(IntDefaultHandler);
  334. void USB_OTG1_DriverIRQHandler(void) ALIAS(IntDefaultHandler);
  335. void ENET_DriverIRQHandler(void) ALIAS(IntDefaultHandler);
  336. void ENET_1588_Timer_DriverIRQHandler(void) ALIAS(IntDefaultHandler);
  337. void XBAR1_IRQ_0_1_DriverIRQHandler(void) ALIAS(IntDefaultHandler);
  338. void XBAR1_IRQ_2_3_DriverIRQHandler(void) ALIAS(IntDefaultHandler);
  339. void ADC_ETC_IRQ0_DriverIRQHandler(void) ALIAS(IntDefaultHandler);
  340. void ADC_ETC_IRQ1_DriverIRQHandler(void) ALIAS(IntDefaultHandler);
  341. void ADC_ETC_IRQ2_DriverIRQHandler(void) ALIAS(IntDefaultHandler);
  342. void ADC_ETC_ERROR_IRQ_DriverIRQHandler(void) ALIAS(IntDefaultHandler);
  343. void PIT_DriverIRQHandler(void) ALIAS(IntDefaultHandler);
  344. void ACMP1_DriverIRQHandler(void) ALIAS(IntDefaultHandler);
  345. void ACMP2_DriverIRQHandler(void) ALIAS(IntDefaultHandler);
  346. void ACMP3_DriverIRQHandler(void) ALIAS(IntDefaultHandler);
  347. void ACMP4_DriverIRQHandler(void) ALIAS(IntDefaultHandler);
  348. void Reserved143_DriverIRQHandler(void) ALIAS(IntDefaultHandler);
  349. void Reserved144_DriverIRQHandler(void) ALIAS(IntDefaultHandler);
  350. void ENC1_DriverIRQHandler(void) ALIAS(IntDefaultHandler);
  351. void ENC2_DriverIRQHandler(void) ALIAS(IntDefaultHandler);
  352. void Reserved147_DriverIRQHandler(void) ALIAS(IntDefaultHandler);
  353. void Reserved148_DriverIRQHandler(void) ALIAS(IntDefaultHandler);
  354. void TMR1_DriverIRQHandler(void) ALIAS(IntDefaultHandler);
  355. void TMR2_DriverIRQHandler(void) ALIAS(IntDefaultHandler);
  356. void Reserved151_DriverIRQHandler(void) ALIAS(IntDefaultHandler);
  357. void Reserved152_DriverIRQHandler(void) ALIAS(IntDefaultHandler);
  358. void PWM2_0_DriverIRQHandler(void) ALIAS(IntDefaultHandler);
  359. void PWM2_1_DriverIRQHandler(void) ALIAS(IntDefaultHandler);
  360. void PWM2_2_DriverIRQHandler(void) ALIAS(IntDefaultHandler);
  361. void PWM2_3_DriverIRQHandler(void) ALIAS(IntDefaultHandler);
  362. void PWM2_FAULT_DriverIRQHandler(void) ALIAS(IntDefaultHandler);
  363. //*****************************************************************************
  364. // The entry point for the application.
  365. // __main() is the entry point for Redlib based applications
  366. // main() is the entry point for Newlib based applications
  367. //*****************************************************************************
  368. #if defined (__REDLIB__)
  369. extern void __main(void);
  370. #endif
  371. extern int main(void);
  372. //*****************************************************************************
  373. // External declaration for the pointer to the stack top from the Linker Script
  374. //*****************************************************************************
  375. extern void _vStackTop(void);
  376. //*****************************************************************************
  377. #if defined (__cplusplus)
  378. } // extern "C"
  379. #endif
  380. //*****************************************************************************
  381. // The vector table.
  382. // This relies on the linker script to place at correct location in memory.
  383. //*****************************************************************************
  384. extern void (* const g_pfnVectors[])(void);
  385. extern void * __Vectors __attribute__ ((alias ("g_pfnVectors")));
  386. __attribute__ ((used, section(".isr_vector")))
  387. void (* const g_pfnVectors[])(void) = {
  388. // Core Level - CM7
  389. &_vStackTop, // The initial stack pointer
  390. ResetISR, // The reset handler
  391. NMI_Handler, // The NMI handler
  392. HardFault_Handler, // The hard fault handler
  393. MemManage_Handler, // The MPU fault handler
  394. BusFault_Handler, // The bus fault handler
  395. UsageFault_Handler, // The usage fault handler
  396. 0, // Reserved
  397. 0, // Reserved
  398. 0, // Reserved
  399. 0, // Reserved
  400. SVC_Handler, // SVCall handler
  401. DebugMon_Handler, // Debug monitor handler
  402. 0, // Reserved
  403. PendSV_Handler, // The PendSV handler
  404. SysTick_Handler, // The SysTick handler
  405. // Chip Level - MIMXRT1021
  406. DMA0_DMA16_IRQHandler, // 16 : DMA channel 0/16 transfer complete
  407. DMA1_DMA17_IRQHandler, // 17 : DMA channel 1/17 transfer complete
  408. DMA2_DMA18_IRQHandler, // 18 : DMA channel 2/18 transfer complete
  409. DMA3_DMA19_IRQHandler, // 19 : DMA channel 3/19 transfer complete
  410. DMA4_DMA20_IRQHandler, // 20 : DMA channel 4/20 transfer complete
  411. DMA5_DMA21_IRQHandler, // 21 : DMA channel 5/21 transfer complete
  412. DMA6_DMA22_IRQHandler, // 22 : DMA channel 6/22 transfer complete
  413. DMA7_DMA23_IRQHandler, // 23 : DMA channel 7/23 transfer complete
  414. DMA8_DMA24_IRQHandler, // 24 : DMA channel 8/24 transfer complete
  415. DMA9_DMA25_IRQHandler, // 25 : DMA channel 9/25 transfer complete
  416. DMA10_DMA26_IRQHandler, // 26 : DMA channel 10/26 transfer complete
  417. DMA11_DMA27_IRQHandler, // 27 : DMA channel 11/27 transfer complete
  418. DMA12_DMA28_IRQHandler, // 28 : DMA channel 12/28 transfer complete
  419. DMA13_DMA29_IRQHandler, // 29 : DMA channel 13/29 transfer complete
  420. DMA14_DMA30_IRQHandler, // 30 : DMA channel 14/30 transfer complete
  421. DMA15_DMA31_IRQHandler, // 31 : DMA channel 15/31 transfer complete
  422. DMA_ERROR_IRQHandler, // 32 : DMA error interrupt channels 0-15 / 16-31
  423. CTI0_ERROR_IRQHandler, // 33 : CTI trigger outputs
  424. CTI1_ERROR_IRQHandler, // 34 : CTI trigger outputs
  425. CORE_IRQHandler, // 35 : CorePlatform exception IRQ
  426. LPUART1_IRQHandler, // 36 : LPUART1 TX interrupt and RX interrupt
  427. LPUART2_IRQHandler, // 37 : LPUART2 TX interrupt and RX interrupt
  428. LPUART3_IRQHandler, // 38 : LPUART3 TX interrupt and RX interrupt
  429. LPUART4_IRQHandler, // 39 : LPUART4 TX interrupt and RX interrupt
  430. LPUART5_IRQHandler, // 40 : LPUART5 TX interrupt and RX interrupt
  431. LPUART6_IRQHandler, // 41 : LPUART6 TX interrupt and RX interrupt
  432. LPUART7_IRQHandler, // 42 : LPUART7 TX interrupt and RX interrupt
  433. LPUART8_IRQHandler, // 43 : LPUART8 TX interrupt and RX interrupt
  434. LPI2C1_IRQHandler, // 44 : LPI2C1 interrupt
  435. LPI2C2_IRQHandler, // 45 : LPI2C2 interrupt
  436. LPI2C3_IRQHandler, // 46 : LPI2C3 interrupt
  437. LPI2C4_IRQHandler, // 47 : LPI2C4 interrupt
  438. LPSPI1_IRQHandler, // 48 : LPSPI1 single interrupt vector for all sources
  439. LPSPI2_IRQHandler, // 49 : LPSPI2 single interrupt vector for all sources
  440. LPSPI3_IRQHandler, // 50 : LPSPI3 single interrupt vector for all sources
  441. LPSPI4_IRQHandler, // 51 : LPSPI4 single interrupt vector for all sources
  442. CAN1_IRQHandler, // 52 : CAN1 interrupt
  443. CAN2_IRQHandler, // 53 : CAN2 interrupt
  444. FLEXRAM_IRQHandler, // 54 : FlexRAM address out of range Or access hit IRQ
  445. KPP_IRQHandler, // 55 : Keypad nterrupt
  446. Reserved56_IRQHandler, // 56 : Reserved interrupt
  447. GPR_IRQ_IRQHandler, // 57 : Used to notify cores on exception condition while boot
  448. Reserved58_IRQHandler, // 58 : Reserved interrupt
  449. Reserved59_IRQHandler, // 59 : Reserved interrupt
  450. Reserved60_IRQHandler, // 60 : Reserved interrupt
  451. WDOG2_IRQHandler, // 61 : WDOG2 interrupt
  452. SNVS_HP_WRAPPER_IRQHandler, // 62 : SNVS Functional Interrupt
  453. SNVS_HP_WRAPPER_TZ_IRQHandler, // 63 : SNVS Security Interrupt
  454. SNVS_LP_HP_WRAPPER_IRQHandler, // 64 : ON-OFF button press shorter than 5 secs (pulse event)
  455. CSU_IRQHandler, // 65 : CSU interrupt
  456. DCP_IRQHandler, // 66 : Combined DCP channel interrupts(except channel 0) and CRC interrupt
  457. DCP_VMI_IRQHandler, // 67 : IRQ of DCP channel 0
  458. Reserved68_IRQHandler, // 68 : Reserved interrupt
  459. TRNG_IRQHandler, // 69 : TRNG interrupt
  460. Reserved70_IRQHandler, // 70 : Reserved interrupt
  461. BEE_IRQHandler, // 71 : BEE interrupt
  462. SAI1_IRQHandler, // 72 : SAI1 interrupt
  463. SAI2_IRQHandler, // 73 : SAI1 interrupt
  464. SAI3_RX_IRQHandler, // 74 : SAI3 interrupt
  465. SAI3_TX_IRQHandler, // 75 : SAI3 interrupt
  466. SPDIF_IRQHandler, // 76 : SPDIF interrupt
  467. PMU_IRQHandler, // 77 : PMU interrupt
  468. Reserved78_IRQHandler, // 78 : Reserved interrupt
  469. TEMP_LOW_HIGH_IRQHandler, // 79 : TEMPMON interrupt
  470. TEMP_PANIC_IRQHandler, // 80 : TEMPMON interrupt
  471. USB_PHY_IRQHandler, // 81 : USBPHY (OTG1 UTMI), Interrupt
  472. Reserved82_IRQHandler, // 82 : Reserved interrupt
  473. ADC1_IRQHandler, // 83 : ADC1 interrupt
  474. ADC2_IRQHandler, // 84 : ADC2 interrupt
  475. DCDC_IRQHandler, // 85 : DCDC interrupt
  476. Reserved86_IRQHandler, // 86 : Reserved interrupt
  477. Reserved87_IRQHandler, // 87 : Reserved interrupt
  478. GPIO1_INT0_IRQHandler, // 88 : Active HIGH Interrupt from INT0 from GPIO
  479. GPIO1_INT1_IRQHandler, // 89 : Active HIGH Interrupt from INT1 from GPIO
  480. GPIO1_INT2_IRQHandler, // 90 : Active HIGH Interrupt from INT2 from GPIO
  481. GPIO1_INT3_IRQHandler, // 91 : Active HIGH Interrupt from INT3 from GPIO
  482. GPIO1_INT4_IRQHandler, // 92 : Active HIGH Interrupt from INT4 from GPIO
  483. GPIO1_INT5_IRQHandler, // 93 : Active HIGH Interrupt from INT5 from GPIO
  484. GPIO1_INT6_IRQHandler, // 94 : Active HIGH Interrupt from INT6 from GPIO
  485. GPIO1_INT7_IRQHandler, // 95 : Active HIGH Interrupt from INT7 from GPIO
  486. GPIO1_Combined_0_15_IRQHandler, // 96 : Combined interrupt indication for GPIO1 signal 0 throughout 15
  487. GPIO1_Combined_16_31_IRQHandler, // 97 : Combined interrupt indication for GPIO1 signal 16 throughout 31
  488. GPIO2_Combined_0_15_IRQHandler, // 98 : Combined interrupt indication for GPIO2 signal 0 throughout 15
  489. GPIO2_Combined_16_31_IRQHandler, // 99 : Combined interrupt indication for GPIO2 signal 16 throughout 31
  490. GPIO3_Combined_0_15_IRQHandler, // 100: Combined interrupt indication for GPIO3 signal 0 throughout 15
  491. GPIO3_Combined_16_31_IRQHandler, // 101: Combined interrupt indication for GPIO3 signal 16 throughout 31
  492. Reserved102_IRQHandler, // 102: Reserved interrupt
  493. Reserved103_IRQHandler, // 103: Reserved interrupt
  494. GPIO5_Combined_0_15_IRQHandler, // 104: Combined interrupt indication for GPIO5 signal 0 throughout 15
  495. GPIO5_Combined_16_31_IRQHandler, // 105: Combined interrupt indication for GPIO5 signal 16 throughout 31
  496. FLEXIO1_IRQHandler, // 106: FLEXIO1 interrupt
  497. Reserved107_IRQHandler, // 107: Reserved interrupt
  498. WDOG1_IRQHandler, // 108: WDOG1 interrupt
  499. RTWDOG_IRQHandler, // 109: RTWDOG interrupt
  500. EWM_IRQHandler, // 110: EWM interrupt
  501. CCM_1_IRQHandler, // 111: CCM IRQ1 interrupt
  502. CCM_2_IRQHandler, // 112: CCM IRQ2 interrupt
  503. GPC_IRQHandler, // 113: GPC interrupt
  504. SRC_IRQHandler, // 114: SRC interrupt
  505. Reserved115_IRQHandler, // 115: Reserved interrupt
  506. GPT1_IRQHandler, // 116: GPT1 interrupt
  507. GPT2_IRQHandler, // 117: GPT2 interrupt
  508. PWM1_0_IRQHandler, // 118: PWM1 capture 0, compare 0, or reload 0 interrupt
  509. PWM1_1_IRQHandler, // 119: PWM1 capture 1, compare 1, or reload 0 interrupt
  510. PWM1_2_IRQHandler, // 120: PWM1 capture 2, compare 2, or reload 0 interrupt
  511. PWM1_3_IRQHandler, // 121: PWM1 capture 3, compare 3, or reload 0 interrupt
  512. PWM1_FAULT_IRQHandler, // 122: PWM1 fault or reload error interrupt
  513. Reserved123_IRQHandler, // 123: Reserved interrupt
  514. FLEXSPI_IRQHandler, // 124: FlexSPI0 interrupt
  515. SEMC_IRQHandler, // 125: Reserved interrupt
  516. USDHC1_IRQHandler, // 126: USDHC1 interrupt
  517. USDHC2_IRQHandler, // 127: USDHC2 interrupt
  518. Reserved128_IRQHandler, // 128: Reserved interrupt
  519. USB_OTG1_IRQHandler, // 129: USBO2 USB OTG1
  520. ENET_IRQHandler, // 130: ENET interrupt
  521. ENET_1588_Timer_IRQHandler, // 131: ENET_1588_Timer interrupt
  522. XBAR1_IRQ_0_1_IRQHandler, // 132: XBAR1 interrupt
  523. XBAR1_IRQ_2_3_IRQHandler, // 133: XBAR1 interrupt
  524. ADC_ETC_IRQ0_IRQHandler, // 134: ADCETC IRQ0 interrupt
  525. ADC_ETC_IRQ1_IRQHandler, // 135: ADCETC IRQ1 interrupt
  526. ADC_ETC_IRQ2_IRQHandler, // 136: ADCETC IRQ2 interrupt
  527. ADC_ETC_ERROR_IRQ_IRQHandler, // 137: ADCETC Error IRQ interrupt
  528. PIT_IRQHandler, // 138: PIT interrupt
  529. ACMP1_IRQHandler, // 139: ACMP interrupt
  530. ACMP2_IRQHandler, // 140: ACMP interrupt
  531. ACMP3_IRQHandler, // 141: ACMP interrupt
  532. ACMP4_IRQHandler, // 142: ACMP interrupt
  533. Reserved143_IRQHandler, // 143: Reserved interrupt
  534. Reserved144_IRQHandler, // 144: Reserved interrupt
  535. ENC1_IRQHandler, // 145: ENC1 interrupt
  536. ENC2_IRQHandler, // 146: ENC2 interrupt
  537. Reserved147_IRQHandler, // 147: Reserved interrupt
  538. Reserved148_IRQHandler, // 148: Reserved interrupt
  539. TMR1_IRQHandler, // 149: TMR1 interrupt
  540. TMR2_IRQHandler, // 150: TMR2 interrupt
  541. Reserved151_IRQHandler, // 151: Reserved interrupt
  542. Reserved152_IRQHandler, // 152: Reserved interrupt
  543. PWM2_0_IRQHandler, // 153: PWM2 capture 0, compare 0, or reload 0 interrupt
  544. PWM2_1_IRQHandler, // 154: PWM2 capture 1, compare 1, or reload 0 interrupt
  545. PWM2_2_IRQHandler, // 155: PWM2 capture 2, compare 2, or reload 0 interrupt
  546. PWM2_3_IRQHandler, // 156: PWM2 capture 3, compare 3, or reload 0 interrupt
  547. PWM2_FAULT_IRQHandler, // 157: PWM2 fault or reload error interrupt
  548. }; /* End of g_pfnVectors */
  549. //*****************************************************************************
  550. // Functions to carry out the initialization of RW and BSS data sections. These
  551. // are written as separate functions rather than being inlined within the
  552. // ResetISR() function in order to cope with MCUs with multiple banks of
  553. // memory.
  554. //*****************************************************************************
  555. __attribute__ ((section(".after_vectors.init_data")))
  556. void data_init(unsigned int romstart, unsigned int start, unsigned int len) {
  557. unsigned int *pulDest = (unsigned int*) start;
  558. unsigned int *pulSrc = (unsigned int*) romstart;
  559. unsigned int loop;
  560. for (loop = 0; loop < len; loop = loop + 4)
  561. *pulDest++ = *pulSrc++;
  562. }
  563. __attribute__ ((section(".after_vectors.init_bss")))
  564. void bss_init(unsigned int start, unsigned int len) {
  565. unsigned int *pulDest = (unsigned int*) start;
  566. unsigned int loop;
  567. for (loop = 0; loop < len; loop = loop + 4)
  568. *pulDest++ = 0;
  569. }
  570. //*****************************************************************************
  571. // The following symbols are constructs generated by the linker, indicating
  572. // the location of various points in the "Global Section Table". This table is
  573. // created by the linker via the Code Red managed linker script mechanism. It
  574. // contains the load address, execution address and length of each RW data
  575. // section and the execution and length of each BSS (zero initialized) section.
  576. //*****************************************************************************
  577. extern unsigned int __data_section_table;
  578. extern unsigned int __data_section_table_end;
  579. extern unsigned int __bss_section_table;
  580. extern unsigned int __bss_section_table_end;
  581. //*****************************************************************************
  582. // Reset entry point for your code.
  583. // Sets up a simple runtime environment and initializes the C/C++
  584. // library.
  585. //*****************************************************************************
  586. __attribute__ ((naked, section(".after_vectors.reset")))
  587. void ResetISR(void) {
  588. // Disable interrupts
  589. __asm volatile ("cpsid i");
  590. __asm volatile ("MSR MSP, %0" : : "r" (&_vStackTop) : );
  591. #if defined (__USE_CMSIS)
  592. // If __USE_CMSIS defined, then call CMSIS SystemInit code
  593. SystemInit();
  594. #else
  595. // Disable Watchdog
  596. volatile unsigned int *WDOG1_WCR = (unsigned int *) 0x400B8000;
  597. *WDOG1_WCR = *WDOG1_WCR & ~(1 << 2);
  598. volatile unsigned int *WDOG2_WCR = (unsigned int *) 0x400D0000;
  599. *WDOG2_WCR = *WDOG2_WCR & ~(1 << 2);
  600. // Write watchdog update key to unlock
  601. *((volatile unsigned int *)0x400BC004) = 0xD928C520;
  602. // Set timeout value
  603. *((volatile unsigned int *)0x400BC008) = 0xFFFF;
  604. // Now disable watchdog via control register
  605. volatile unsigned int *RTWDOG_CS = (unsigned int *) 0x400BC000;
  606. *RTWDOG_CS = (*RTWDOG_CS & ~(1 << 7)) | (1 << 5);
  607. #endif // (__USE_CMSIS)
  608. //
  609. // Copy the data sections from flash to SRAM.
  610. //
  611. unsigned int LoadAddr, ExeAddr, SectionLen;
  612. unsigned int *SectionTableAddr;
  613. // Load base address of Global Section Table
  614. SectionTableAddr = &__data_section_table;
  615. // Copy the data sections from flash to SRAM.
  616. while (SectionTableAddr < &__data_section_table_end) {
  617. LoadAddr = *SectionTableAddr++;
  618. ExeAddr = *SectionTableAddr++;
  619. SectionLen = *SectionTableAddr++;
  620. data_init(LoadAddr, ExeAddr, SectionLen);
  621. }
  622. // At this point, SectionTableAddr = &__bss_section_table;
  623. // Zero fill the bss segment
  624. while (SectionTableAddr < &__bss_section_table_end) {
  625. ExeAddr = *SectionTableAddr++;
  626. SectionLen = *SectionTableAddr++;
  627. bss_init(ExeAddr, SectionLen);
  628. }
  629. #if !defined (__USE_CMSIS)
  630. // Assume that if __USE_CMSIS defined, then CMSIS SystemInit code
  631. // will setup the VTOR register
  632. // Check to see if we are running the code from a non-zero
  633. // address (eg RAM, external flash), in which case we need
  634. // to modify the VTOR register to tell the CPU that the
  635. // vector table is located at a non-0x0 address.
  636. unsigned int * pSCB_VTOR = (unsigned int *) 0xE000ED08;
  637. if ((unsigned int *)g_pfnVectors!=(unsigned int *) 0x00000000) {
  638. *pSCB_VTOR = (unsigned int)g_pfnVectors;
  639. }
  640. #endif // (__USE_CMSIS)
  641. #if defined (__cplusplus)
  642. //
  643. // Call C++ library initialisation
  644. //
  645. __libc_init_array();
  646. #endif
  647. // Reenable interrupts
  648. __asm volatile ("cpsie i");
  649. #if defined (__REDLIB__)
  650. // Call the Redlib library, which in turn calls main()
  651. __main();
  652. #else
  653. main();
  654. #endif
  655. //
  656. // main() shouldn't return, but if it does, we'll just enter an infinite loop
  657. //
  658. while (1) {
  659. ;
  660. }
  661. }
  662. //*****************************************************************************
  663. // Default core exception handlers. Override the ones here by defining your own
  664. // handler routines in your application code.
  665. //*****************************************************************************
  666. WEAK_AV void NMI_Handler(void)
  667. { while(1) {}
  668. }
  669. WEAK_AV void HardFault_Handler(void)
  670. { while(1) {}
  671. }
  672. WEAK_AV void MemManage_Handler(void)
  673. { while(1) {}
  674. }
  675. WEAK_AV void BusFault_Handler(void)
  676. { while(1) {}
  677. }
  678. WEAK_AV void UsageFault_Handler(void)
  679. { while(1) {}
  680. }
  681. WEAK_AV void SVC_Handler(void)
  682. { while(1) {}
  683. }
  684. WEAK_AV void DebugMon_Handler(void)
  685. { while(1) {}
  686. }
  687. WEAK_AV void PendSV_Handler(void)
  688. { while(1) {}
  689. }
  690. WEAK_AV void SysTick_Handler(void)
  691. { while(1) {}
  692. }
  693. //*****************************************************************************
  694. // Processor ends up here if an unexpected interrupt occurs or a specific
  695. // handler is not present in the application code.
  696. //*****************************************************************************
  697. WEAK_AV void IntDefaultHandler(void)
  698. { while(1) {}
  699. }
  700. //*****************************************************************************
  701. // Default application exception handlers. Override the ones here by defining
  702. // your own handler routines in your application code. These routines call
  703. // driver exception handlers or IntDefaultHandler() if no driver exception
  704. // handler is included.
  705. //*****************************************************************************
  706. WEAK void DMA0_DMA16_IRQHandler(void)
  707. { DMA0_DMA16_DriverIRQHandler();
  708. }
  709. WEAK void DMA1_DMA17_IRQHandler(void)
  710. { DMA1_DMA17_DriverIRQHandler();
  711. }
  712. WEAK void DMA2_DMA18_IRQHandler(void)
  713. { DMA2_DMA18_DriverIRQHandler();
  714. }
  715. WEAK void DMA3_DMA19_IRQHandler(void)
  716. { DMA3_DMA19_DriverIRQHandler();
  717. }
  718. WEAK void DMA4_DMA20_IRQHandler(void)
  719. { DMA4_DMA20_DriverIRQHandler();
  720. }
  721. WEAK void DMA5_DMA21_IRQHandler(void)
  722. { DMA5_DMA21_DriverIRQHandler();
  723. }
  724. WEAK void DMA6_DMA22_IRQHandler(void)
  725. { DMA6_DMA22_DriverIRQHandler();
  726. }
  727. WEAK void DMA7_DMA23_IRQHandler(void)
  728. { DMA7_DMA23_DriverIRQHandler();
  729. }
  730. WEAK void DMA8_DMA24_IRQHandler(void)
  731. { DMA8_DMA24_DriverIRQHandler();
  732. }
  733. WEAK void DMA9_DMA25_IRQHandler(void)
  734. { DMA9_DMA25_DriverIRQHandler();
  735. }
  736. WEAK void DMA10_DMA26_IRQHandler(void)
  737. { DMA10_DMA26_DriverIRQHandler();
  738. }
  739. WEAK void DMA11_DMA27_IRQHandler(void)
  740. { DMA11_DMA27_DriverIRQHandler();
  741. }
  742. WEAK void DMA12_DMA28_IRQHandler(void)
  743. { DMA12_DMA28_DriverIRQHandler();
  744. }
  745. WEAK void DMA13_DMA29_IRQHandler(void)
  746. { DMA13_DMA29_DriverIRQHandler();
  747. }
  748. WEAK void DMA14_DMA30_IRQHandler(void)
  749. { DMA14_DMA30_DriverIRQHandler();
  750. }
  751. WEAK void DMA15_DMA31_IRQHandler(void)
  752. { DMA15_DMA31_DriverIRQHandler();
  753. }
  754. WEAK void DMA_ERROR_IRQHandler(void)
  755. { DMA_ERROR_DriverIRQHandler();
  756. }
  757. WEAK void CTI0_ERROR_IRQHandler(void)
  758. { CTI0_ERROR_DriverIRQHandler();
  759. }
  760. WEAK void CTI1_ERROR_IRQHandler(void)
  761. { CTI1_ERROR_DriverIRQHandler();
  762. }
  763. WEAK void CORE_IRQHandler(void)
  764. { CORE_DriverIRQHandler();
  765. }
  766. WEAK void LPUART1_IRQHandler(void)
  767. { LPUART1_DriverIRQHandler();
  768. }
  769. WEAK void LPUART2_IRQHandler(void)
  770. { LPUART2_DriverIRQHandler();
  771. }
  772. WEAK void LPUART3_IRQHandler(void)
  773. { LPUART3_DriverIRQHandler();
  774. }
  775. WEAK void LPUART4_IRQHandler(void)
  776. { LPUART4_DriverIRQHandler();
  777. }
  778. WEAK void LPUART5_IRQHandler(void)
  779. { LPUART5_DriverIRQHandler();
  780. }
  781. WEAK void LPUART6_IRQHandler(void)
  782. { LPUART6_DriverIRQHandler();
  783. }
  784. WEAK void LPUART7_IRQHandler(void)
  785. { LPUART7_DriverIRQHandler();
  786. }
  787. WEAK void LPUART8_IRQHandler(void)
  788. { LPUART8_DriverIRQHandler();
  789. }
  790. WEAK void LPI2C1_IRQHandler(void)
  791. { LPI2C1_DriverIRQHandler();
  792. }
  793. WEAK void LPI2C2_IRQHandler(void)
  794. { LPI2C2_DriverIRQHandler();
  795. }
  796. WEAK void LPI2C3_IRQHandler(void)
  797. { LPI2C3_DriverIRQHandler();
  798. }
  799. WEAK void LPI2C4_IRQHandler(void)
  800. { LPI2C4_DriverIRQHandler();
  801. }
  802. WEAK void LPSPI1_IRQHandler(void)
  803. { LPSPI1_DriverIRQHandler();
  804. }
  805. WEAK void LPSPI2_IRQHandler(void)
  806. { LPSPI2_DriverIRQHandler();
  807. }
  808. WEAK void LPSPI3_IRQHandler(void)
  809. { LPSPI3_DriverIRQHandler();
  810. }
  811. WEAK void LPSPI4_IRQHandler(void)
  812. { LPSPI4_DriverIRQHandler();
  813. }
  814. WEAK void CAN1_IRQHandler(void)
  815. { CAN1_DriverIRQHandler();
  816. }
  817. WEAK void CAN2_IRQHandler(void)
  818. { CAN2_DriverIRQHandler();
  819. }
  820. WEAK void FLEXRAM_IRQHandler(void)
  821. { FLEXRAM_DriverIRQHandler();
  822. }
  823. WEAK void KPP_IRQHandler(void)
  824. { KPP_DriverIRQHandler();
  825. }
  826. WEAK void Reserved56_IRQHandler(void)
  827. { Reserved56_DriverIRQHandler();
  828. }
  829. WEAK void GPR_IRQ_IRQHandler(void)
  830. { GPR_IRQ_DriverIRQHandler();
  831. }
  832. WEAK void Reserved58_IRQHandler(void)
  833. { Reserved58_DriverIRQHandler();
  834. }
  835. WEAK void Reserved59_IRQHandler(void)
  836. { Reserved59_DriverIRQHandler();
  837. }
  838. WEAK void Reserved60_IRQHandler(void)
  839. { Reserved60_DriverIRQHandler();
  840. }
  841. WEAK void WDOG2_IRQHandler(void)
  842. { WDOG2_DriverIRQHandler();
  843. }
  844. WEAK void SNVS_HP_WRAPPER_IRQHandler(void)
  845. { SNVS_HP_WRAPPER_DriverIRQHandler();
  846. }
  847. WEAK void SNVS_HP_WRAPPER_TZ_IRQHandler(void)
  848. { SNVS_HP_WRAPPER_TZ_DriverIRQHandler();
  849. }
  850. WEAK void SNVS_LP_HP_WRAPPER_IRQHandler(void)
  851. { SNVS_LP_HP_WRAPPER_DriverIRQHandler();
  852. }
  853. WEAK void CSU_IRQHandler(void)
  854. { CSU_DriverIRQHandler();
  855. }
  856. WEAK void DCP_IRQHandler(void)
  857. { DCP_DriverIRQHandler();
  858. }
  859. WEAK void DCP_VMI_IRQHandler(void)
  860. { DCP_VMI_DriverIRQHandler();
  861. }
  862. WEAK void Reserved68_IRQHandler(void)
  863. { Reserved68_DriverIRQHandler();
  864. }
  865. WEAK void TRNG_IRQHandler(void)
  866. { TRNG_DriverIRQHandler();
  867. }
  868. WEAK void Reserved70_IRQHandler(void)
  869. { Reserved70_DriverIRQHandler();
  870. }
  871. WEAK void BEE_IRQHandler(void)
  872. { BEE_DriverIRQHandler();
  873. }
  874. WEAK void SAI1_IRQHandler(void)
  875. { SAI1_DriverIRQHandler();
  876. }
  877. WEAK void SAI2_IRQHandler(void)
  878. { SAI2_DriverIRQHandler();
  879. }
  880. WEAK void SAI3_RX_IRQHandler(void)
  881. { SAI3_RX_DriverIRQHandler();
  882. }
  883. WEAK void SAI3_TX_IRQHandler(void)
  884. { SAI3_TX_DriverIRQHandler();
  885. }
  886. WEAK void SPDIF_IRQHandler(void)
  887. { SPDIF_DriverIRQHandler();
  888. }
  889. WEAK void PMU_IRQHandler(void)
  890. { PMU_DriverIRQHandler();
  891. }
  892. WEAK void Reserved78_IRQHandler(void)
  893. { Reserved78_DriverIRQHandler();
  894. }
  895. WEAK void TEMP_LOW_HIGH_IRQHandler(void)
  896. { TEMP_LOW_HIGH_DriverIRQHandler();
  897. }
  898. WEAK void TEMP_PANIC_IRQHandler(void)
  899. { TEMP_PANIC_DriverIRQHandler();
  900. }
  901. WEAK void USB_PHY_IRQHandler(void)
  902. { USB_PHY_DriverIRQHandler();
  903. }
  904. WEAK void Reserved82_IRQHandler(void)
  905. { Reserved82_DriverIRQHandler();
  906. }
  907. WEAK void ADC1_IRQHandler(void)
  908. { ADC1_DriverIRQHandler();
  909. }
  910. WEAK void ADC2_IRQHandler(void)
  911. { ADC2_DriverIRQHandler();
  912. }
  913. WEAK void DCDC_IRQHandler(void)
  914. { DCDC_DriverIRQHandler();
  915. }
  916. WEAK void Reserved86_IRQHandler(void)
  917. { Reserved86_DriverIRQHandler();
  918. }
  919. WEAK void Reserved87_IRQHandler(void)
  920. { Reserved87_DriverIRQHandler();
  921. }
  922. WEAK void GPIO1_INT0_IRQHandler(void)
  923. { GPIO1_INT0_DriverIRQHandler();
  924. }
  925. WEAK void GPIO1_INT1_IRQHandler(void)
  926. { GPIO1_INT1_DriverIRQHandler();
  927. }
  928. WEAK void GPIO1_INT2_IRQHandler(void)
  929. { GPIO1_INT2_DriverIRQHandler();
  930. }
  931. WEAK void GPIO1_INT3_IRQHandler(void)
  932. { GPIO1_INT3_DriverIRQHandler();
  933. }
  934. WEAK void GPIO1_INT4_IRQHandler(void)
  935. { GPIO1_INT4_DriverIRQHandler();
  936. }
  937. WEAK void GPIO1_INT5_IRQHandler(void)
  938. { GPIO1_INT5_DriverIRQHandler();
  939. }
  940. WEAK void GPIO1_INT6_IRQHandler(void)
  941. { GPIO1_INT6_DriverIRQHandler();
  942. }
  943. WEAK void GPIO1_INT7_IRQHandler(void)
  944. { GPIO1_INT7_DriverIRQHandler();
  945. }
  946. WEAK void GPIO1_Combined_0_15_IRQHandler(void)
  947. { GPIO1_Combined_0_15_DriverIRQHandler();
  948. }
  949. WEAK void GPIO1_Combined_16_31_IRQHandler(void)
  950. { GPIO1_Combined_16_31_DriverIRQHandler();
  951. }
  952. WEAK void GPIO2_Combined_0_15_IRQHandler(void)
  953. { GPIO2_Combined_0_15_DriverIRQHandler();
  954. }
  955. WEAK void GPIO2_Combined_16_31_IRQHandler(void)
  956. { GPIO2_Combined_16_31_DriverIRQHandler();
  957. }
  958. WEAK void GPIO3_Combined_0_15_IRQHandler(void)
  959. { GPIO3_Combined_0_15_DriverIRQHandler();
  960. }
  961. WEAK void GPIO3_Combined_16_31_IRQHandler(void)
  962. { GPIO3_Combined_16_31_DriverIRQHandler();
  963. }
  964. WEAK void Reserved102_IRQHandler(void)
  965. { Reserved102_DriverIRQHandler();
  966. }
  967. WEAK void Reserved103_IRQHandler(void)
  968. { Reserved103_DriverIRQHandler();
  969. }
  970. WEAK void GPIO5_Combined_0_15_IRQHandler(void)
  971. { GPIO5_Combined_0_15_DriverIRQHandler();
  972. }
  973. WEAK void GPIO5_Combined_16_31_IRQHandler(void)
  974. { GPIO5_Combined_16_31_DriverIRQHandler();
  975. }
  976. WEAK void FLEXIO1_IRQHandler(void)
  977. { FLEXIO1_DriverIRQHandler();
  978. }
  979. WEAK void Reserved107_IRQHandler(void)
  980. { Reserved107_DriverIRQHandler();
  981. }
  982. WEAK void WDOG1_IRQHandler(void)
  983. { WDOG1_DriverIRQHandler();
  984. }
  985. WEAK void RTWDOG_IRQHandler(void)
  986. { RTWDOG_DriverIRQHandler();
  987. }
  988. WEAK void EWM_IRQHandler(void)
  989. { EWM_DriverIRQHandler();
  990. }
  991. WEAK void CCM_1_IRQHandler(void)
  992. { CCM_1_DriverIRQHandler();
  993. }
  994. WEAK void CCM_2_IRQHandler(void)
  995. { CCM_2_DriverIRQHandler();
  996. }
  997. WEAK void GPC_IRQHandler(void)
  998. { GPC_DriverIRQHandler();
  999. }
  1000. WEAK void SRC_IRQHandler(void)
  1001. { SRC_DriverIRQHandler();
  1002. }
  1003. WEAK void Reserved115_IRQHandler(void)
  1004. { Reserved115_DriverIRQHandler();
  1005. }
  1006. WEAK void GPT1_IRQHandler(void)
  1007. { GPT1_DriverIRQHandler();
  1008. }
  1009. WEAK void GPT2_IRQHandler(void)
  1010. { GPT2_DriverIRQHandler();
  1011. }
  1012. WEAK void PWM1_0_IRQHandler(void)
  1013. { PWM1_0_DriverIRQHandler();
  1014. }
  1015. WEAK void PWM1_1_IRQHandler(void)
  1016. { PWM1_1_DriverIRQHandler();
  1017. }
  1018. WEAK void PWM1_2_IRQHandler(void)
  1019. { PWM1_2_DriverIRQHandler();
  1020. }
  1021. WEAK void PWM1_3_IRQHandler(void)
  1022. { PWM1_3_DriverIRQHandler();
  1023. }
  1024. WEAK void PWM1_FAULT_IRQHandler(void)
  1025. { PWM1_FAULT_DriverIRQHandler();
  1026. }
  1027. WEAK void Reserved123_IRQHandler(void)
  1028. { Reserved123_DriverIRQHandler();
  1029. }
  1030. WEAK void FLEXSPI_IRQHandler(void)
  1031. { FLEXSPI_DriverIRQHandler();
  1032. }
  1033. WEAK void SEMC_IRQHandler(void)
  1034. { SEMC_DriverIRQHandler();
  1035. }
  1036. WEAK void USDHC1_IRQHandler(void)
  1037. { USDHC1_DriverIRQHandler();
  1038. }
  1039. WEAK void USDHC2_IRQHandler(void)
  1040. { USDHC2_DriverIRQHandler();
  1041. }
  1042. WEAK void Reserved128_IRQHandler(void)
  1043. { Reserved128_DriverIRQHandler();
  1044. }
  1045. WEAK void USB_OTG1_IRQHandler(void)
  1046. { USB_OTG1_DriverIRQHandler();
  1047. }
  1048. WEAK void ENET_IRQHandler(void)
  1049. { ENET_DriverIRQHandler();
  1050. }
  1051. WEAK void ENET_1588_Timer_IRQHandler(void)
  1052. { ENET_1588_Timer_DriverIRQHandler();
  1053. }
  1054. WEAK void XBAR1_IRQ_0_1_IRQHandler(void)
  1055. { XBAR1_IRQ_0_1_DriverIRQHandler();
  1056. }
  1057. WEAK void XBAR1_IRQ_2_3_IRQHandler(void)
  1058. { XBAR1_IRQ_2_3_DriverIRQHandler();
  1059. }
  1060. WEAK void ADC_ETC_IRQ0_IRQHandler(void)
  1061. { ADC_ETC_IRQ0_DriverIRQHandler();
  1062. }
  1063. WEAK void ADC_ETC_IRQ1_IRQHandler(void)
  1064. { ADC_ETC_IRQ1_DriverIRQHandler();
  1065. }
  1066. WEAK void ADC_ETC_IRQ2_IRQHandler(void)
  1067. { ADC_ETC_IRQ2_DriverIRQHandler();
  1068. }
  1069. WEAK void ADC_ETC_ERROR_IRQ_IRQHandler(void)
  1070. { ADC_ETC_ERROR_IRQ_DriverIRQHandler();
  1071. }
  1072. WEAK void PIT_IRQHandler(void)
  1073. { PIT_DriverIRQHandler();
  1074. }
  1075. WEAK void ACMP1_IRQHandler(void)
  1076. { ACMP1_DriverIRQHandler();
  1077. }
  1078. WEAK void ACMP2_IRQHandler(void)
  1079. { ACMP2_DriverIRQHandler();
  1080. }
  1081. WEAK void ACMP3_IRQHandler(void)
  1082. { ACMP3_DriverIRQHandler();
  1083. }
  1084. WEAK void ACMP4_IRQHandler(void)
  1085. { ACMP4_DriverIRQHandler();
  1086. }
  1087. WEAK void Reserved143_IRQHandler(void)
  1088. { Reserved143_DriverIRQHandler();
  1089. }
  1090. WEAK void Reserved144_IRQHandler(void)
  1091. { Reserved144_DriverIRQHandler();
  1092. }
  1093. WEAK void ENC1_IRQHandler(void)
  1094. { ENC1_DriverIRQHandler();
  1095. }
  1096. WEAK void ENC2_IRQHandler(void)
  1097. { ENC2_DriverIRQHandler();
  1098. }
  1099. WEAK void Reserved147_IRQHandler(void)
  1100. { Reserved147_DriverIRQHandler();
  1101. }
  1102. WEAK void Reserved148_IRQHandler(void)
  1103. { Reserved148_DriverIRQHandler();
  1104. }
  1105. WEAK void TMR1_IRQHandler(void)
  1106. { TMR1_DriverIRQHandler();
  1107. }
  1108. WEAK void TMR2_IRQHandler(void)
  1109. { TMR2_DriverIRQHandler();
  1110. }
  1111. WEAK void Reserved151_IRQHandler(void)
  1112. { Reserved151_DriverIRQHandler();
  1113. }
  1114. WEAK void Reserved152_IRQHandler(void)
  1115. { Reserved152_DriverIRQHandler();
  1116. }
  1117. WEAK void PWM2_0_IRQHandler(void)
  1118. { PWM2_0_DriverIRQHandler();
  1119. }
  1120. WEAK void PWM2_1_IRQHandler(void)
  1121. { PWM2_1_DriverIRQHandler();
  1122. }
  1123. WEAK void PWM2_2_IRQHandler(void)
  1124. { PWM2_2_DriverIRQHandler();
  1125. }
  1126. WEAK void PWM2_3_IRQHandler(void)
  1127. { PWM2_3_DriverIRQHandler();
  1128. }
  1129. WEAK void PWM2_FAULT_IRQHandler(void)
  1130. { PWM2_FAULT_DriverIRQHandler();
  1131. }
  1132. //*****************************************************************************
  1133. #if defined (DEBUG)
  1134. #pragma GCC pop_options
  1135. #endif // (DEBUG)