startup_msp432p401r_ccs.c 12 KB

123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960616263646566676869707172737475767778798081828384858687888990919293949596979899100101102103104105106107108109110111112113114115116117118119120121122123124125126127128129130131132133134135136137138139140141142143144145146147148149150151152153154155156157158159160161162163164165166167168169170171172173174175176177178179180181182183184185186187188189190191192193194195196197198199200201202203204205206
  1. /******************************************************************************
  2. *
  3. * Copyright (C) 2012 - 2018 Texas Instruments Incorporated - http://www.ti.com/
  4. *
  5. * Redistribution and use in source and binary forms, with or without
  6. * modification, are permitted provided that the following conditions
  7. * are met:
  8. *
  9. * Redistributions of source code must retain the above copyright
  10. * notice, this list of conditions and the following disclaimer.
  11. *
  12. * Redistributions in binary form must reproduce the above copyright
  13. * notice, this list of conditions and the following disclaimer in the
  14. * documentation and/or other materials provided with the
  15. * distribution.
  16. *
  17. * Neither the name of Texas Instruments Incorporated nor the names of
  18. * its contributors may be used to endorse or promote products derived
  19. * from this software without specific prior written permission.
  20. *
  21. * THIS SOFTWARE IS PROVIDED BY THE COPYRIGHT HOLDERS AND CONTRIBUTORS
  22. * "AS IS" AND ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT
  23. * LIMITED TO, THE IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR
  24. * A PARTICULAR PURPOSE ARE DISCLAIMED. IN NO EVENT SHALL THE COPYRIGHT
  25. * OWNER OR CONTRIBUTORS BE LIABLE FOR ANY DIRECT, INDIRECT, INCIDENTAL,
  26. * SPECIAL, EXEMPLARY, OR CONSEQUENTIAL DAMAGES (INCLUDING, BUT NOT
  27. * LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES; LOSS OF USE,
  28. * DATA, OR PROFITS; OR BUSINESS INTERRUPTION) HOWEVER CAUSED AND ON ANY
  29. * THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT LIABILITY, OR TORT
  30. * (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT OF THE USE
  31. * OF THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE.
  32. *
  33. * MSP432P401R Interrupt Vector Table
  34. *
  35. *****************************************************************************/
  36. #include <stdint.h>
  37. /* Linker variable that marks the top of the stack. */
  38. extern unsigned long __STACK_END;
  39. /* External declaration for the reset handler that is to be called when the */
  40. /* processor is started */
  41. extern void _c_int00(void);
  42. /* External declaration for system initialization function */
  43. extern void SystemInit(void);
  44. /* Forward declaration of the default fault handlers. */
  45. void Default_Handler (void) __attribute__((weak));
  46. extern void Reset_Handler (void) __attribute__((weak));
  47. /* Cortex-M4 Processor Exceptions */
  48. extern void NMI_Handler (void) __attribute__((weak, alias("Default_Handler")));
  49. extern void HardFault_Handler (void) __attribute__((weak, alias("Default_Handler")));
  50. extern void MemManage_Handler (void) __attribute__((weak, alias("Default_Handler")));
  51. extern void BusFault_Handler (void) __attribute__((weak, alias("Default_Handler")));
  52. extern void UsageFault_Handler (void) __attribute__((weak, alias("Default_Handler")));
  53. extern void SVC_Handler (void) __attribute__((weak, alias("Default_Handler")));
  54. extern void DebugMon_Handler (void) __attribute__((weak, alias("Default_Handler")));
  55. extern void PendSV_Handler (void) __attribute__((weak, alias("Default_Handler")));
  56. /* device specific interrupt handler */
  57. extern void SysTick_Handler (void) __attribute__((weak,alias("Default_Handler")));
  58. extern void PSS_IRQHandler (void) __attribute__((weak,alias("Default_Handler")));
  59. extern void CS_IRQHandler (void) __attribute__((weak,alias("Default_Handler")));
  60. extern void PCM_IRQHandler (void) __attribute__((weak,alias("Default_Handler")));
  61. extern void WDT_A_IRQHandler (void) __attribute__((weak,alias("Default_Handler")));
  62. extern void FPU_IRQHandler (void) __attribute__((weak,alias("Default_Handler")));
  63. extern void FLCTL_IRQHandler (void) __attribute__((weak,alias("Default_Handler")));
  64. extern void COMP_E0_IRQHandler (void) __attribute__((weak,alias("Default_Handler")));
  65. extern void COMP_E1_IRQHandler (void) __attribute__((weak,alias("Default_Handler")));
  66. extern void TA0_0_IRQHandler (void) __attribute__((weak,alias("Default_Handler")));
  67. extern void TA0_N_IRQHandler (void) __attribute__((weak,alias("Default_Handler")));
  68. extern void TA1_0_IRQHandler (void) __attribute__((weak,alias("Default_Handler")));
  69. extern void TA1_N_IRQHandler (void) __attribute__((weak,alias("Default_Handler")));
  70. extern void TA2_0_IRQHandler (void) __attribute__((weak,alias("Default_Handler")));
  71. extern void TA2_N_IRQHandler (void) __attribute__((weak,alias("Default_Handler")));
  72. extern void TA3_0_IRQHandler (void) __attribute__((weak,alias("Default_Handler")));
  73. extern void TA3_N_IRQHandler (void) __attribute__((weak,alias("Default_Handler")));
  74. extern void EUSCIA0_IRQHandler (void) __attribute__((weak,alias("Default_Handler")));
  75. extern void EUSCIA1_IRQHandler (void) __attribute__((weak,alias("Default_Handler")));
  76. extern void EUSCIA2_IRQHandler (void) __attribute__((weak,alias("Default_Handler")));
  77. extern void EUSCIA3_IRQHandler (void) __attribute__((weak,alias("Default_Handler")));
  78. extern void EUSCIB0_IRQHandler (void) __attribute__((weak,alias("Default_Handler")));
  79. extern void EUSCIB1_IRQHandler (void) __attribute__((weak,alias("Default_Handler")));
  80. extern void EUSCIB2_IRQHandler (void) __attribute__((weak,alias("Default_Handler")));
  81. extern void EUSCIB3_IRQHandler (void) __attribute__((weak,alias("Default_Handler")));
  82. extern void ADC14_IRQHandler (void) __attribute__((weak,alias("Default_Handler")));
  83. extern void T32_INT1_IRQHandler (void) __attribute__((weak,alias("Default_Handler")));
  84. extern void T32_INT2_IRQHandler (void) __attribute__((weak,alias("Default_Handler")));
  85. extern void T32_INTC_IRQHandler (void) __attribute__((weak,alias("Default_Handler")));
  86. extern void AES256_IRQHandler (void) __attribute__((weak,alias("Default_Handler")));
  87. extern void RTC_C_IRQHandler (void) __attribute__((weak,alias("Default_Handler")));
  88. extern void DMA_ERR_IRQHandler (void) __attribute__((weak,alias("Default_Handler")));
  89. extern void DMA_INT3_IRQHandler (void) __attribute__((weak,alias("Default_Handler")));
  90. extern void DMA_INT2_IRQHandler (void) __attribute__((weak,alias("Default_Handler")));
  91. extern void DMA_INT1_IRQHandler (void) __attribute__((weak,alias("Default_Handler")));
  92. extern void DMA_INT0_IRQHandler (void) __attribute__((weak,alias("Default_Handler")));
  93. extern void PORT1_IRQHandler (void) __attribute__((weak,alias("Default_Handler")));
  94. extern void PORT2_IRQHandler (void) __attribute__((weak,alias("Default_Handler")));
  95. extern void PORT3_IRQHandler (void) __attribute__((weak,alias("Default_Handler")));
  96. extern void PORT4_IRQHandler (void) __attribute__((weak,alias("Default_Handler")));
  97. extern void PORT5_IRQHandler (void) __attribute__((weak,alias("Default_Handler")));
  98. extern void PORT6_IRQHandler (void) __attribute__((weak,alias("Default_Handler")));
  99. /* Interrupt vector table. Note that the proper constructs must be placed on this to */
  100. /* ensure that it ends up at physical address 0x0000.0000 or at the start of */
  101. /* the program if located at a start address other than 0. */
  102. #pragma RETAIN(interruptVectors)
  103. #pragma DATA_SECTION(interruptVectors, ".intvecs")
  104. void (* const interruptVectors[])(void) =
  105. {
  106. (void (*)(void))((uint32_t)&__STACK_END),
  107. /* The initial stack pointer */
  108. Reset_Handler, /* The reset handler */
  109. NMI_Handler, /* The NMI handler */
  110. HardFault_Handler, /* The hard fault handler */
  111. MemManage_Handler, /* The MPU fault handler */
  112. BusFault_Handler, /* The bus fault handler */
  113. UsageFault_Handler, /* The usage fault handler */
  114. 0, /* Reserved */
  115. 0, /* Reserved */
  116. 0, /* Reserved */
  117. 0, /* Reserved */
  118. SVC_Handler, /* SVCall handler */
  119. DebugMon_Handler, /* Debug monitor handler */
  120. 0, /* Reserved */
  121. PendSV_Handler, /* The PendSV handler */
  122. SysTick_Handler, /* The SysTick handler */
  123. PSS_IRQHandler, /* PSS Interrupt */
  124. CS_IRQHandler, /* CS Interrupt */
  125. PCM_IRQHandler, /* PCM Interrupt */
  126. WDT_A_IRQHandler, /* WDT_A Interrupt */
  127. FPU_IRQHandler, /* FPU Interrupt */
  128. FLCTL_IRQHandler, /* Flash Controller Interrupt*/
  129. COMP_E0_IRQHandler, /* COMP_E0 Interrupt */
  130. COMP_E1_IRQHandler, /* COMP_E1 Interrupt */
  131. TA0_0_IRQHandler, /* TA0_0 Interrupt */
  132. TA0_N_IRQHandler, /* TA0_N Interrupt */
  133. TA1_0_IRQHandler, /* TA1_0 Interrupt */
  134. TA1_N_IRQHandler, /* TA1_N Interrupt */
  135. TA2_0_IRQHandler, /* TA2_0 Interrupt */
  136. TA2_N_IRQHandler, /* TA2_N Interrupt */
  137. TA3_0_IRQHandler, /* TA3_0 Interrupt */
  138. TA3_N_IRQHandler, /* TA3_N Interrupt */
  139. EUSCIA0_IRQHandler, /* EUSCIA0 Interrupt */
  140. EUSCIA1_IRQHandler, /* EUSCIA1 Interrupt */
  141. EUSCIA2_IRQHandler, /* EUSCIA2 Interrupt */
  142. EUSCIA3_IRQHandler, /* EUSCIA3 Interrupt */
  143. EUSCIB0_IRQHandler, /* EUSCIB0 Interrupt */
  144. EUSCIB1_IRQHandler, /* EUSCIB1 Interrupt */
  145. EUSCIB2_IRQHandler, /* EUSCIB2 Interrupt */
  146. EUSCIB3_IRQHandler, /* EUSCIB3 Interrupt */
  147. ADC14_IRQHandler, /* ADC14 Interrupt */
  148. T32_INT1_IRQHandler, /* T32_INT1 Interrupt */
  149. T32_INT2_IRQHandler, /* T32_INT2 Interrupt */
  150. T32_INTC_IRQHandler, /* T32_INTC Interrupt */
  151. AES256_IRQHandler, /* AES256 Interrupt */
  152. RTC_C_IRQHandler, /* RTC_C Interrupt */
  153. DMA_ERR_IRQHandler, /* DMA_ERR Interrupt */
  154. DMA_INT3_IRQHandler, /* DMA_INT3 Interrupt */
  155. DMA_INT2_IRQHandler, /* DMA_INT2 Interrupt */
  156. DMA_INT1_IRQHandler, /* DMA_INT1 Interrupt */
  157. DMA_INT0_IRQHandler, /* DMA_INT0 Interrupt */
  158. PORT1_IRQHandler, /* Port1 Interrupt */
  159. PORT2_IRQHandler, /* Port2 Interrupt */
  160. PORT3_IRQHandler, /* Port3 Interrupt */
  161. PORT4_IRQHandler, /* Port4 Interrupt */
  162. PORT5_IRQHandler, /* Port5 Interrupt */
  163. PORT6_IRQHandler /* Port6 Interrupt */
  164. };
  165. /* Forward declaration of the default fault handlers. */
  166. /* This is the code that gets called when the processor first starts execution */
  167. /* following a reset event. Only the absolutely necessary set is performed, */
  168. /* after which the application supplied entry() routine is called. Any fancy */
  169. /* actions (such as making decisions based on the reset cause register, and */
  170. /* resetting the bits in that register) are left solely in the hands of the */
  171. /* application. */
  172. void Reset_Handler(void)
  173. {
  174. SystemInit();
  175. /* Jump to the CCS C Initialization Routine. */
  176. __asm(" .global _c_int00\n"
  177. " b.w _c_int00");
  178. }
  179. /* This is the code that gets called when the processor receives an unexpected */
  180. /* interrupt. This simply enters an infinite loop, preserving the system state */
  181. /* for examination by a debugger. */
  182. void Default_Handler(void)
  183. {
  184. /* Fault trap exempt from ULP advisor */
  185. #pragma diag_push
  186. #pragma CHECK_ULP("-2.1")
  187. /* Enter an infinite loop. */
  188. while(1)
  189. {
  190. }
  191. #pragma diag_pop
  192. }