e8714ad5176c64c668aff471a8cd5e8f9603b8ee
[i3-mote/i3-mote.git] / Basic-Test-Package / MSP432 / Test_MSP432_I2C_M24xx256 / startup_msp432p401r_ccs.c
1 /******************************************************************************\r
2\r
3 *  Copyright (C) 2012 - 2016 Texas Instruments Incorporated - http://www.ti.com/ \r
4\r
5 *  Redistribution and use in source and binary forms, with or without \r
6 *  modification, are permitted provided that the following conditions \r
7 *  are met:\r
8\r
9 *   Redistributions of source code must retain the above copyright \r
10 *   notice, this list of conditions and the following disclaimer.\r
11\r
12 *   Redistributions in binary form must reproduce the above copyright\r
13 *   notice, this list of conditions and the following disclaimer in the \r
14 *   documentation and/or other materials provided with the   \r
15 *   distribution.\r
16\r
17 *   Neither the name of Texas Instruments Incorporated nor the names of\r
18 *   its contributors may be used to endorse or promote products derived\r
19 *   from this software without specific prior written permission.\r
20\r
21 *  THIS SOFTWARE IS PROVIDED BY THE COPYRIGHT HOLDERS AND CONTRIBUTORS \r
22 *  "AS IS" AND ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT \r
23 *  LIMITED TO, THE IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR\r
24 *  A PARTICULAR PURPOSE ARE DISCLAIMED. IN NO EVENT SHALL THE COPYRIGHT \r
25 *  OWNER OR CONTRIBUTORS BE LIABLE FOR ANY DIRECT, INDIRECT, INCIDENTAL, \r
26 *  SPECIAL, EXEMPLARY, OR CONSEQUENTIAL DAMAGES (INCLUDING, BUT NOT \r
27 *  LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES; LOSS OF USE,\r
28 *  DATA, OR PROFITS; OR BUSINESS INTERRUPTION) HOWEVER CAUSED AND ON ANY\r
29 *  THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT LIABILITY, OR TORT \r
30 *  (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT OF THE USE \r
31 *  OF THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE.  \r
32\r
33 *  MSP432P401R Interrupt Vector Table and startup code for CCS TI ARM\r
34\r
35 *****************************************************************************/\r
36 \r
37 #include <stdint.h>\r
38 \r
39 /* Forward declaration of the default fault handlers. */\r
40 static void resetISR(void);\r
41 static void nmiISR(void);\r
42 static void faultISR(void);\r
43 static void defaultISR(void);\r
44 \r
45 \r
46 /* External declaration for the reset handler that is to be called when the */\r
47 /* processor is started                                                     */\r
48 extern void _c_int00(void);\r
49 \r
50 /* External declaration for system initialization function                  */\r
51 extern void SystemInit(void);\r
52 \r
53 /* Linker variable that marks the top of the stack. */\r
54 extern unsigned long __STACK_END;\r
55 \r
56 \r
57 /* External declarations for the interrupt handlers used by the application. */\r
58 /* To be added by user */\r
59 \r
60 \r
61 /* Interrupt vector table.  Note that the proper constructs must be placed on this to */\r
62 /* ensure that it ends up at physical address 0x0000.0000 or at the start of          */\r
63 /* the program if located at a start address other than 0.                            */\r
64 #pragma RETAIN(interruptVectors)\r
65 #pragma DATA_SECTION(interruptVectors, ".intvecs")\r
66 void (* const interruptVectors[])(void) =\r
67 {\r
68     (void (*)(void))((uint32_t)&__STACK_END),\r
69                                             /* The initial stack pointer */\r
70     resetISR,                               /* The reset handler         */\r
71     nmiISR,                                 /* The NMI handler           */\r
72     faultISR,                               /* The hard fault handler    */\r
73     defaultISR,                             /* The MPU fault handler     */\r
74     defaultISR,                             /* The bus fault handler     */\r
75     defaultISR,                             /* The usage fault handler   */\r
76     0,                                      /* Reserved                  */\r
77     0,                                      /* Reserved                  */\r
78     0,                                      /* Reserved                  */\r
79     0,                                      /* Reserved                  */\r
80     defaultISR,                             /* SVCall handler            */\r
81     defaultISR,                             /* Debug monitor handler     */\r
82     0,                                      /* Reserved                  */\r
83     defaultISR,                             /* The PendSV handler        */\r
84         defaultISR,                             /* The SysTick handler       */\r
85     defaultISR,                             /* PSS ISR                   */\r
86     defaultISR,                             /* CS ISR                    */\r
87     defaultISR,                             /* PCM ISR                   */\r
88     defaultISR,                             /* WDT ISR                   */\r
89     defaultISR,                             /* FPU ISR                   */\r
90     defaultISR,                             /* FLCTL ISR                 */\r
91     defaultISR,                             /* COMP0 ISR                 */\r
92     defaultISR,                             /* COMP1 ISR                 */\r
93     defaultISR,                             /* TA0_0 ISR                 */\r
94     defaultISR,                             /* TA0_N ISR                 */\r
95     defaultISR,                             /* TA1_0 ISR                 */\r
96     defaultISR,                             /* TA1_N ISR                 */\r
97     defaultISR,                             /* TA2_0 ISR                 */\r
98     defaultISR,                             /* TA2_N ISR                 */\r
99     defaultISR,                             /* TA3_0 ISR                 */\r
100     defaultISR,                             /* TA3_N ISR                 */\r
101     defaultISR,                             /* EUSCIA0 ISR               */\r
102     defaultISR,                             /* EUSCIA1 ISR               */\r
103     defaultISR,                             /* EUSCIA2 ISR               */\r
104     defaultISR,                             /* EUSCIA3 ISR               */\r
105     defaultISR,                             /* EUSCIB0 ISR               */\r
106     defaultISR,                             /* EUSCIB1 ISR               */\r
107     defaultISR,                             /* EUSCIB2 ISR               */\r
108     defaultISR,                             /* EUSCIB3 ISR               */\r
109     defaultISR,                             /* ADC14 ISR                 */\r
110     defaultISR,                             /* T32_INT1 ISR              */\r
111     defaultISR,                             /* T32_INT2 ISR              */\r
112     defaultISR,                             /* T32_INTC ISR              */\r
113     defaultISR,                             /* AES ISR                   */\r
114     defaultISR,                             /* RTC ISR                   */\r
115     defaultISR,                             /* DMA_ERR ISR               */\r
116     defaultISR,                             /* DMA_INT3 ISR              */\r
117     defaultISR,                             /* DMA_INT2 ISR              */\r
118     defaultISR,                             /* DMA_INT1 ISR              */\r
119     defaultISR,                             /* DMA_INT0 ISR              */\r
120     defaultISR,                             /* PORT1 ISR                 */\r
121     defaultISR,                             /* PORT2 ISR                 */\r
122     defaultISR,                             /* PORT3 ISR                 */\r
123     defaultISR,                             /* PORT4 ISR                 */\r
124     defaultISR,                             /* PORT5 ISR                 */\r
125     defaultISR,                             /* PORT6 ISR                 */\r
126     defaultISR,                             /* Reserved 41               */\r
127     defaultISR,                             /* Reserved 42               */\r
128     defaultISR,                             /* Reserved 43               */\r
129     defaultISR,                             /* Reserved 44               */\r
130     defaultISR,                             /* Reserved 45               */\r
131     defaultISR,                             /* Reserved 46               */\r
132     defaultISR,                             /* Reserved 47               */\r
133     defaultISR,                             /* Reserved 48               */\r
134     defaultISR,                             /* Reserved 49               */\r
135     defaultISR,                             /* Reserved 50               */\r
136     defaultISR,                             /* Reserved 51               */\r
137     defaultISR,                             /* Reserved 52               */\r
138     defaultISR,                             /* Reserved 53               */\r
139     defaultISR,                             /* Reserved 54               */\r
140     defaultISR,                             /* Reserved 55               */\r
141     defaultISR,                             /* Reserved 56               */\r
142     defaultISR,                             /* Reserved 57               */\r
143     defaultISR,                             /* Reserved 58               */\r
144     defaultISR,                             /* Reserved 59               */\r
145     defaultISR,                             /* Reserved 60               */\r
146     defaultISR,                             /* Reserved 61               */\r
147     defaultISR,                             /* Reserved 62               */\r
148     defaultISR                              /* Reserved 63               */\r
149 };\r
150 \r
151 \r
152 /* This is the code that gets called when the processor first starts execution */\r
153 /* following a reset event.  Only the absolutely necessary set is performed,   */\r
154 /* after which the application supplied entry() routine is called.  Any fancy  */\r
155 /* actions (such as making decisions based on the reset cause register, and    */\r
156 /* resetting the bits in that register) are left solely in the hands of the    */\r
157 /* application.                                                                */\r
158 void resetISR(void)\r
159 {\r
160     SystemInit();\r
161 \r
162     /* Jump to the CCS C Initialization Routine. */\r
163     __asm("    .global _c_int00\n"\r
164           "    b.w     _c_int00");\r
165 }\r
166 \r
167 /* This is the code that gets called when the processor receives a NMI.  This  */\r
168 /* simply enters an infinite loop, preserving the system state for examination */\r
169 /* by a debugger.                                                              */\r
170 static void nmiISR(void)\r
171 {\r
172     /* Fault trap exempt from ULP advisor */\r
173     #pragma diag_push\r
174     #pragma CHECK_ULP("-2.1")\r
175 \r
176     /* Enter an infinite loop. */\r
177     while(1)\r
178     {\r
179     }\r
180 \r
181     #pragma diag_pop\r
182 }\r
183 \r
184 \r
185 /* This is the code that gets called when the processor receives a fault        */\r
186 /* interrupt.  This simply enters an infinite loop, preserving the system state */\r
187 /* for examination by a debugger.                                               */\r
188 static void faultISR(void)\r
189 {\r
190     /* Fault trap exempt from ULP advisor */\r
191     #pragma diag_push\r
192     #pragma CHECK_ULP("-2.1")\r
193 \r
194     /* Enter an infinite loop. */\r
195     while(1)\r
196     {\r
197     }\r
198 \r
199     #pragma diag_pop\r
200 }\r
201 \r
202 \r
203 /* This is the code that gets called when the processor receives an unexpected  */\r
204 /* interrupt.  This simply enters an infinite loop, preserving the system state */\r
205 /* for examination by a debugger.                                               */\r
206 static void defaultISR(void)\r
207 {\r
208     /* Fault trap exempt from ULP advisor */\r
209     #pragma diag_push\r
210     #pragma CHECK_ULP("-2.1")\r
211 \r
212     /* Enter an infinite loop. */\r
213     while(1)\r
214     {\r
215     }\r
216 \r
217     #pragma diag_pop\r
218 }\r
219 \r