F2837xD_PieVect.c 16 KB

123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960616263646566676869707172737475767778798081828384858687888990919293949596979899100101102103104105106107108109110111112113114115116117118119120121122123124125126127128129130131132133134135136137138139140141142143144145146147148149150151152153154155156157158159160161162163164165166167168169170171172173174175176177178179180181182183184185186187188189190191192193194195196197198199200201202203204205206207208209210211212213214215216217218219220221222223224225226227228229230231232233234235236237238239240241242243244245246247248249250251252253254255256257258259260261262263264265266267268269270271272273274275276277278279280281282283284285286287288289290291292293294295296297298299300301302303304305306307308309310311312313314315316317318319320
  1. //###########################################################################
  2. //
  3. // FILE: F2837xD_PieVect.c
  4. //
  5. // TITLE: F2837xD Device PIE Vector Initialization Functions
  6. //
  7. //###########################################################################
  8. // $TI Release: F2837xD Support Library v3.05.00.00 $
  9. // $Release Date: Tue Jun 26 03:15:23 CDT 2018 $
  10. // $Copyright:
  11. // Copyright (C) 2013-2018 Texas Instruments Incorporated - http://www.ti.com/
  12. //
  13. // Redistribution and use in source and binary forms, with or without
  14. // modification, are permitted provided that the following conditions
  15. // are met:
  16. //
  17. // Redistributions of source code must retain the above copyright
  18. // notice, this list of conditions and the following disclaimer.
  19. //
  20. // Redistributions in binary form must reproduce the above copyright
  21. // notice, this list of conditions and the following disclaimer in the
  22. // documentation and/or other materials provided with the
  23. // distribution.
  24. //
  25. // Neither the name of Texas Instruments Incorporated nor the names of
  26. // its contributors may be used to endorse or promote products derived
  27. // from this software without specific prior written permission.
  28. //
  29. // THIS SOFTWARE IS PROVIDED BY THE COPYRIGHT HOLDERS AND CONTRIBUTORS
  30. // "AS IS" AND ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT
  31. // LIMITED TO, THE IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR
  32. // A PARTICULAR PURPOSE ARE DISCLAIMED. IN NO EVENT SHALL THE COPYRIGHT
  33. // OWNER OR CONTRIBUTORS BE LIABLE FOR ANY DIRECT, INDIRECT, INCIDENTAL,
  34. // SPECIAL, EXEMPLARY, OR CONSEQUENTIAL DAMAGES (INCLUDING, BUT NOT
  35. // LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES; LOSS OF USE,
  36. // DATA, OR PROFITS; OR BUSINESS INTERRUPTION) HOWEVER CAUSED AND ON ANY
  37. // THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT LIABILITY, OR TORT
  38. // (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT OF THE USE
  39. // OF THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE.
  40. // $
  41. //###########################################################################
  42. //
  43. // Included Files
  44. //
  45. #include "F2837xD_device.h"
  46. #include "F2837xD_Examples.h"
  47. //
  48. // Globals
  49. //
  50. const struct PIE_VECT_TABLE PieVectTableInit = {
  51. PIE_RESERVED_ISR, // Reserved
  52. PIE_RESERVED_ISR, // Reserved
  53. PIE_RESERVED_ISR, // Reserved
  54. PIE_RESERVED_ISR, // Reserved
  55. PIE_RESERVED_ISR, // Reserved
  56. PIE_RESERVED_ISR, // Reserved
  57. PIE_RESERVED_ISR, // Reserved
  58. PIE_RESERVED_ISR, // Reserved
  59. PIE_RESERVED_ISR, // Reserved
  60. PIE_RESERVED_ISR, // Reserved
  61. PIE_RESERVED_ISR, // Reserved
  62. PIE_RESERVED_ISR, // Reserved
  63. PIE_RESERVED_ISR, // Reserved
  64. TIMER1_ISR, // CPU Timer 1 Interrupt
  65. TIMER2_ISR, // CPU Timer 2 Interrupt
  66. DATALOG_ISR, // Datalogging Interrupt
  67. RTOS_ISR, // RTOS Interrupt
  68. EMU_ISR, // Emulation Interrupt
  69. NMI_ISR, // Non-Maskable Interrupt
  70. ILLEGAL_ISR, // Illegal Operation Trap
  71. USER1_ISR, // User Defined Trap 1
  72. USER2_ISR, // User Defined Trap 2
  73. USER3_ISR, // User Defined Trap 3
  74. USER4_ISR, // User Defined Trap 4
  75. USER5_ISR, // User Defined Trap 5
  76. USER6_ISR, // User Defined Trap 6
  77. USER7_ISR, // User Defined Trap 7
  78. USER8_ISR, // User Defined Trap 8
  79. USER9_ISR, // User Defined Trap 9
  80. USER10_ISR, // User Defined Trap 10
  81. USER11_ISR, // User Defined Trap 11
  82. USER12_ISR, // User Defined Trap 12
  83. ADCA1_ISR, // 1.1 - ADCA Interrupt 1
  84. ADCB1_ISR, // 1.2 - ADCB Interrupt 1
  85. ADCC1_ISR, // 1.3 - ADCC Interrupt 1
  86. XINT1_ISR, // 1.4 - XINT1 Interrupt
  87. XINT2_ISR, // 1.5 - XINT2 Interrupt
  88. ADCD1_ISR, // 1.6 - ADCD Interrupt 1
  89. TIMER0_ISR, // 1.7 - Timer 0 Interrupt
  90. WAKE_ISR, // 1.8 - Standby and Halt Wakeup Interrupt
  91. EPWM1_TZ_ISR, // 2.1 - ePWM1 Trip Zone Interrupt
  92. EPWM2_TZ_ISR, // 2.2 - ePWM2 Trip Zone Interrupt
  93. EPWM3_TZ_ISR, // 2.3 - ePWM3 Trip Zone Interrupt
  94. EPWM4_TZ_ISR, // 2.4 - ePWM4 Trip Zone Interrupt
  95. EPWM5_TZ_ISR, // 2.5 - ePWM5 Trip Zone Interrupt
  96. EPWM6_TZ_ISR, // 2.6 - ePWM6 Trip Zone Interrupt
  97. EPWM7_TZ_ISR, // 2.7 - ePWM7 Trip Zone Interrupt
  98. EPWM8_TZ_ISR, // 2.8 - ePWM8 Trip Zone Interrupt
  99. EPWM1_ISR, // 3.1 - ePWM1 Interrupt
  100. EPWM2_ISR, // 3.2 - ePWM2 Interrupt
  101. EPWM3_ISR, // 3.3 - ePWM3 Interrupt
  102. EPWM4_ISR, // 3.4 - ePWM4 Interrupt
  103. EPWM5_ISR, // 3.5 - ePWM5 Interrupt
  104. EPWM6_ISR, // 3.6 - ePWM6 Interrupt
  105. EPWM7_ISR, // 3.7 - ePWM7 Interrupt
  106. EPWM8_ISR, // 3.8 - ePWM8 Interrupt
  107. ECAP1_ISR, // 4.1 - eCAP1 Interrupt
  108. ECAP2_ISR, // 4.2 - eCAP2 Interrupt
  109. ECAP3_ISR, // 4.3 - eCAP3 Interrupt
  110. ECAP4_ISR, // 4.4 - eCAP4 Interrupt
  111. ECAP5_ISR, // 4.5 - eCAP5 Interrupt
  112. ECAP6_ISR, // 4.6 - eCAP6 Interrupt
  113. PIE_RESERVED_ISR, // 4.7 - Reserved
  114. PIE_RESERVED_ISR, // 4.8 - Reserved
  115. EQEP1_ISR, // 5.1 - eQEP1 Interrupt
  116. EQEP2_ISR, // 5.2 - eQEP2 Interrupt
  117. EQEP3_ISR, // 5.3 - eQEP3 Interrupt
  118. PIE_RESERVED_ISR, // 5.4 - Reserved
  119. PIE_RESERVED_ISR, // 5.5 - Reserved
  120. PIE_RESERVED_ISR, // 5.6 - Reserved
  121. PIE_RESERVED_ISR, // 5.7 - Reserved
  122. PIE_RESERVED_ISR, // 5.8 - Reserved
  123. SPIA_RX_ISR, // 6.1 - SPIA Receive Interrupt
  124. SPIA_TX_ISR, // 6.2 - SPIA Transmit Interrupt
  125. SPIB_RX_ISR, // 6.3 - SPIB Receive Interrupt
  126. SPIB_TX_ISR, // 6.4 - SPIB Transmit Interrupt
  127. MCBSPA_RX_ISR, // 6.5 - McBSPA Receive Interrupt
  128. MCBSPA_TX_ISR, // 6.6 - McBSPA Transmit Interrupt
  129. MCBSPB_RX_ISR, // 6.7 - McBSPB Receive Interrupt
  130. MCBSPB_TX_ISR, // 6.8 - McBSPB Transmit Interrupt
  131. DMA_CH1_ISR, // 7.1 - DMA Channel 1 Interrupt
  132. DMA_CH2_ISR, // 7.2 - DMA Channel 2 Interrupt
  133. DMA_CH3_ISR, // 7.3 - DMA Channel 3 Interrupt
  134. DMA_CH4_ISR, // 7.4 - DMA Channel 4 Interrupt
  135. DMA_CH5_ISR, // 7.5 - DMA Channel 5 Interrupt
  136. DMA_CH6_ISR, // 7.6 - DMA Channel 6 Interrupt
  137. PIE_RESERVED_ISR, // 7.7 - Reserved
  138. PIE_RESERVED_ISR, // 7.8 - Reserved
  139. I2CA_ISR, // 8.1 - I2CA Interrupt 1
  140. I2CA_FIFO_ISR, // 8.2 - I2CA Interrupt 2
  141. I2CB_ISR, // 8.3 - I2CB Interrupt 1
  142. I2CB_FIFO_ISR, // 8.4 - I2CB Interrupt 2
  143. SCIC_RX_ISR, // 8.5 - SCIC Receive Interrupt
  144. SCIC_TX_ISR, // 8.6 - SCIC Transmit Interrupt
  145. SCID_RX_ISR, // 8.7 - SCID Receive Interrupt
  146. SCID_TX_ISR, // 8.8 - SCID Transmit Interrupt
  147. SCIA_RX_ISR, // 9.1 - SCIA Receive Interrupt
  148. SCIA_TX_ISR, // 9.2 - SCIA Transmit Interrupt
  149. SCIB_RX_ISR, // 9.3 - SCIB Receive Interrupt
  150. SCIB_TX_ISR, // 9.4 - SCIB Transmit Interrupt
  151. CANA0_ISR, // 9.5 - CANA Interrupt 0
  152. CANA1_ISR, // 9.6 - CANA Interrupt 1
  153. CANB0_ISR, // 9.7 - CANB Interrupt 0
  154. CANB1_ISR, // 9.8 - CANB Interrupt 1
  155. ADCA_EVT_ISR, // 10.1 - ADCA Event Interrupt
  156. ADCA2_ISR, // 10.2 - ADCA Interrupt 2
  157. ADCA3_ISR, // 10.3 - ADCA Interrupt 3
  158. ADCA4_ISR, // 10.4 - ADCA Interrupt 4
  159. ADCB_EVT_ISR, // 10.5 - ADCB Event Interrupt
  160. ADCB2_ISR, // 10.6 - ADCB Interrupt 2
  161. ADCB3_ISR, // 10.7 - ADCB Interrupt 3
  162. ADCB4_ISR, // 10.8 - ADCB Interrupt 4
  163. CLA1_1_ISR, // 11.1 - CLA1 Interrupt 1
  164. CLA1_2_ISR, // 11.2 - CLA1 Interrupt 2
  165. CLA1_3_ISR, // 11.3 - CLA1 Interrupt 3
  166. CLA1_4_ISR, // 11.4 - CLA1 Interrupt 4
  167. CLA1_5_ISR, // 11.5 - CLA1 Interrupt 5
  168. CLA1_6_ISR, // 11.6 - CLA1 Interrupt 6
  169. CLA1_7_ISR, // 11.7 - CLA1 Interrupt 7
  170. CLA1_8_ISR, // 11.8 - CLA1 Interrupt 8
  171. XINT3_ISR, // 12.1 - XINT3 Interrupt
  172. XINT4_ISR, // 12.2 - XINT4 Interrupt
  173. XINT5_ISR, // 12.3 - XINT5 Interrupt
  174. PIE_RESERVED_ISR, // 12.4 - Reserved
  175. PIE_RESERVED_ISR, // 12.5 - Reserved
  176. VCU_ISR, // 12.6 - VCU Interrupt
  177. FPU_OVERFLOW_ISR, // 12.7 - FPU Overflow Interrupt
  178. FPU_UNDERFLOW_ISR, // 12.8 - FPU Underflow Interrupt
  179. PIE_RESERVED_ISR, // 1.9 - Reserved
  180. PIE_RESERVED_ISR, // 1.10 - Reserved
  181. PIE_RESERVED_ISR, // 1.11 - Reserved
  182. PIE_RESERVED_ISR, // 1.12 - Reserved
  183. IPC0_ISR, // 1.13 - IPC Interrupt 0
  184. IPC1_ISR, // 1.14 - IPC Interrupt 1
  185. IPC2_ISR, // 1.15 - IPC Interrupt 2
  186. IPC3_ISR, // 1.16 - IPC Interrupt 3
  187. EPWM9_TZ_ISR, // 2.9 - ePWM9 Trip Zone Interrupt
  188. EPWM10_TZ_ISR, // 2.10 - ePWM10 Trip Zone Interrupt
  189. EPWM11_TZ_ISR, // 2.11 - ePWM11 Trip Zone Interrupt
  190. EPWM12_TZ_ISR, // 2.12 - ePWM12 Trip Zone Interrupt
  191. PIE_RESERVED_ISR, // 2.13 - Reserved
  192. PIE_RESERVED_ISR, // 2.14 - Reserved
  193. PIE_RESERVED_ISR, // 2.15 - Reserved
  194. PIE_RESERVED_ISR, // 2.16 - Reserved
  195. EPWM9_ISR, // 3.9 - ePWM9 Interrupt
  196. EPWM10_ISR, // 3.10 - ePWM10 Interrupt
  197. EPWM11_ISR, // 3.11 - ePWM11 Interrupt
  198. EPWM12_ISR, // 3.12 - ePWM12 Interrupt
  199. PIE_RESERVED_ISR, // 3.13 - Reserved
  200. PIE_RESERVED_ISR, // 3.14 - Reserved
  201. PIE_RESERVED_ISR, // 3.15 - Reserved
  202. PIE_RESERVED_ISR, // 3.16 - Reserved
  203. PIE_RESERVED_ISR, // 4.9 - Reserved
  204. PIE_RESERVED_ISR, // 4.10 - Reserved
  205. PIE_RESERVED_ISR, // 4.11 - Reserved
  206. PIE_RESERVED_ISR, // 4.12 - Reserved
  207. PIE_RESERVED_ISR, // 4.13 - Reserved
  208. PIE_RESERVED_ISR, // 4.14 - Reserved
  209. PIE_RESERVED_ISR, // 4.15 - Reserved
  210. PIE_RESERVED_ISR, // 4.16 - Reserved
  211. SD1_ISR, // 5.9 - SD1 Interrupt
  212. SD2_ISR, // 5.10 - SD2 Interrupt
  213. PIE_RESERVED_ISR, // 5.11 - Reserved
  214. PIE_RESERVED_ISR, // 5.12 - Reserved
  215. PIE_RESERVED_ISR, // 5.13 - Reserved
  216. PIE_RESERVED_ISR, // 5.14 - Reserved
  217. PIE_RESERVED_ISR, // 5.15 - Reserved
  218. PIE_RESERVED_ISR, // 5.16 - Reserved
  219. SPIC_RX_ISR, // 6.9 - SPIC Receive Interrupt
  220. SPIC_TX_ISR, // 6.10 - SPIC Transmit Interrupt
  221. PIE_RESERVED_ISR, // 6.11 - Reserved
  222. PIE_RESERVED_ISR, // 6.12 - Reserved
  223. PIE_RESERVED_ISR, // 6.13 - Reserved
  224. PIE_RESERVED_ISR, // 6.14 - Reserved
  225. PIE_RESERVED_ISR, // 6.15 - Reserved
  226. PIE_RESERVED_ISR, // 6.16 - Reserved
  227. PIE_RESERVED_ISR, // 7.9 - Reserved
  228. PIE_RESERVED_ISR, // 7.10 - Reserved
  229. PIE_RESERVED_ISR, // 7.11 - Reserved
  230. PIE_RESERVED_ISR, // 7.12 - Reserved
  231. PIE_RESERVED_ISR, // 7.13 - Reserved
  232. PIE_RESERVED_ISR, // 7.14 - Reserved
  233. PIE_RESERVED_ISR, // 7.15 - Reserved
  234. PIE_RESERVED_ISR, // 7.16 - Reserved
  235. PIE_RESERVED_ISR, // 8.9 - Reserved
  236. PIE_RESERVED_ISR, // 8.10 - Reserved
  237. PIE_RESERVED_ISR, // 8.11 - Reserved
  238. PIE_RESERVED_ISR, // 8.12 - Reserved
  239. PIE_RESERVED_ISR, // 8.13 - Reserved
  240. PIE_RESERVED_ISR, // 8.14 - Reserved
  241. #ifdef CPU1
  242. UPPA_ISR, // 8.15 - uPPA Interrupt
  243. PIE_RESERVED_ISR, // 8.16 - Reserved
  244. #elif defined(CPU2)
  245. PIE_RESERVED_ISR, // 8.15 - Reserved
  246. PIE_RESERVED_ISR, // 8.16 - Reserved
  247. #endif
  248. PIE_RESERVED_ISR, // 9.9 - Reserved
  249. PIE_RESERVED_ISR, // 9.10 - Reserved
  250. PIE_RESERVED_ISR, // 9.11 - Reserved
  251. PIE_RESERVED_ISR, // 9.12 - Reserved
  252. PIE_RESERVED_ISR, // 9.13 - Reserved
  253. PIE_RESERVED_ISR, // 9.14 - Reserved
  254. #ifdef CPU1
  255. USBA_ISR, // 9.15 - USBA Interrupt
  256. #elif defined(CPU2)
  257. PIE_RESERVED_ISR, // 9.15 - Reserved
  258. #endif
  259. PIE_RESERVED_ISR, // 9.16 - Reserved
  260. ADCC_EVT_ISR, // 10.9 - ADCC Event Interrupt
  261. ADCC2_ISR, // 10.10 - ADCC Interrupt 2
  262. ADCC3_ISR, // 10.11 - ADCC Interrupt 3
  263. ADCC4_ISR, // 10.12 - ADCC Interrupt 4
  264. ADCD_EVT_ISR, // 10.13 - ADCD Event Interrupt
  265. ADCD2_ISR, // 10.14 - ADCD Interrupt 2
  266. ADCD3_ISR, // 10.15 - ADCD Interrupt 3
  267. ADCD4_ISR, // 10.16 - ADCD Interrupt 4
  268. PIE_RESERVED_ISR, // 11.9 - Reserved
  269. PIE_RESERVED_ISR, // 11.10 - Reserved
  270. PIE_RESERVED_ISR, // 11.11 - Reserved
  271. PIE_RESERVED_ISR, // 11.12 - Reserved
  272. PIE_RESERVED_ISR, // 11.13 - Reserved
  273. PIE_RESERVED_ISR, // 11.14 - Reserved
  274. PIE_RESERVED_ISR, // 11.15 - Reserved
  275. PIE_RESERVED_ISR, // 11.16 - Reserved
  276. EMIF_ERROR_ISR, // 12.9 - EMIF Error Interrupt
  277. RAM_CORRECTABLE_ERROR_ISR, // 12.10 - RAM Correctable Error Interrupt
  278. FLASH_CORRECTABLE_ERROR_ISR, // 12.11 - Flash Correctable Error Interrupt
  279. RAM_ACCESS_VIOLATION_ISR, // 12.12 - RAM Access Violation Interrupt
  280. SYS_PLL_SLIP_ISR, // 12.13 - System PLL Slip Interrupt
  281. AUX_PLL_SLIP_ISR, // 12.14 - Auxiliary PLL Slip Interrupt
  282. CLA_OVERFLOW_ISR, // 12.15 - CLA Overflow Interrupt
  283. CLA_UNDERFLOW_ISR // 12.16 - CLA Underflow Interrupt
  284. };
  285. //
  286. // InitPieVectTable - This function initializes the PIE vector table to a
  287. // known state and must be executed after boot time.
  288. //
  289. void InitPieVectTable(void)
  290. {
  291. Uint16 i;
  292. Uint32 *Source = (void *) &PieVectTableInit;
  293. Uint32 *Dest = (void *) &PieVectTable;
  294. //
  295. // Do not write over first 3 32-bit locations (these locations are
  296. // initialized by Boot ROM with boot variables)
  297. //
  298. Source = Source + 3;
  299. Dest = Dest + 3;
  300. EALLOW;
  301. for(i = 0; i < 221; i++)
  302. {
  303. *Dest++ = *Source++;
  304. }
  305. EDIS;
  306. //
  307. // Enable the PIE Vector Table
  308. //
  309. PieCtrlRegs.PIECTRL.bit.ENPIE = 1;
  310. }
  311. //
  312. // End of file
  313. //