mbed library sources. Supersedes mbed-src.

Dependents:   Nucleo_Hello_Encoder BLE_iBeaconScan AM1805_DEMO DISCO-F429ZI_ExportTemplate1 ... more

Committer:
AnnaBridge
Date:
Wed Feb 20 22:31:08 2019 +0000
Revision:
189:f392fc9709a3
Parent:
187:0387e8f68319
mbed library release version 165

Who changed what in which revision?

UserRevisionLine numberNew contents of line
AnnaBridge 187:0387e8f68319 1 /**************************************************************************//**
AnnaBridge 187:0387e8f68319 2 * @file startup_M2351.c
AnnaBridge 187:0387e8f68319 3 * @version V2.00
AnnaBridge 187:0387e8f68319 4 * $Revision: 9 $
AnnaBridge 187:0387e8f68319 5 * $Date: 16/08/27 12:33p $
AnnaBridge 187:0387e8f68319 6 * @brief Startup Source File
AnnaBridge 187:0387e8f68319 7 *
AnnaBridge 187:0387e8f68319 8 * @note
AnnaBridge 187:0387e8f68319 9 * Copyright (C) 2016 Nuvoton Technology Corp. All rights reserved.
AnnaBridge 187:0387e8f68319 10 *
AnnaBridge 187:0387e8f68319 11 ******************************************************************************/
AnnaBridge 187:0387e8f68319 12
AnnaBridge 187:0387e8f68319 13 #include "M2351.h"
AnnaBridge 187:0387e8f68319 14
AnnaBridge 187:0387e8f68319 15 /* Suppress warning messages */
AnnaBridge 187:0387e8f68319 16 #if defined(__CC_ARM)
AnnaBridge 187:0387e8f68319 17 // Suppress warning message: extended constant initialiser used
AnnaBridge 187:0387e8f68319 18 #pragma diag_suppress 1296
AnnaBridge 187:0387e8f68319 19 #elif defined(__ICCARM__)
AnnaBridge 187:0387e8f68319 20 #elif defined(__GNUC__)
AnnaBridge 187:0387e8f68319 21 #endif
AnnaBridge 187:0387e8f68319 22
AnnaBridge 187:0387e8f68319 23 /* Macro Definitions */
AnnaBridge 187:0387e8f68319 24 #if defined(__CC_ARM)
AnnaBridge 187:0387e8f68319 25 #define WEAK __attribute__ ((weak))
AnnaBridge 187:0387e8f68319 26 #define ALIAS(f) __attribute__ ((weak, alias(#f)))
AnnaBridge 187:0387e8f68319 27
AnnaBridge 187:0387e8f68319 28 #define WEAK_ALIAS_FUNC(FUN, FUN_ALIAS) \
AnnaBridge 187:0387e8f68319 29 void FUN(void) __attribute__ ((weak, alias(#FUN_ALIAS)));
AnnaBridge 187:0387e8f68319 30
AnnaBridge 187:0387e8f68319 31 #elif defined(__ICCARM__)
AnnaBridge 187:0387e8f68319 32 //#define STRINGIFY(x) #x
AnnaBridge 187:0387e8f68319 33 //#define _STRINGIFY(x) STRINGIFY(x)
AnnaBridge 187:0387e8f68319 34 #define WEAK_ALIAS_FUNC(FUN, FUN_ALIAS) \
AnnaBridge 187:0387e8f68319 35 void FUN(void); \
AnnaBridge 187:0387e8f68319 36 _Pragma(_STRINGIFY(_WEAK_ALIAS_FUNC(FUN, FUN_ALIAS)))
AnnaBridge 187:0387e8f68319 37 #define _WEAK_ALIAS_FUNC(FUN, FUN_ALIAS) weak __WEAK_ALIAS_FUNC(FUN, FUN_ALIAS)
AnnaBridge 187:0387e8f68319 38 #define __WEAK_ALIAS_FUNC(FUN, FUN_ALIAS) FUN##=##FUN_ALIAS
AnnaBridge 187:0387e8f68319 39
AnnaBridge 187:0387e8f68319 40 #elif defined(__GNUC__)
AnnaBridge 187:0387e8f68319 41 #define WEAK __attribute__ ((weak))
AnnaBridge 187:0387e8f68319 42 #define ALIAS(f) __attribute__ ((weak, alias(#f)))
AnnaBridge 187:0387e8f68319 43
AnnaBridge 187:0387e8f68319 44 #define WEAK_ALIAS_FUNC(FUN, FUN_ALIAS) \
AnnaBridge 187:0387e8f68319 45 void FUN(void) __attribute__ ((weak, alias(#FUN_ALIAS)));
AnnaBridge 187:0387e8f68319 46
AnnaBridge 187:0387e8f68319 47 #endif
AnnaBridge 187:0387e8f68319 48
AnnaBridge 187:0387e8f68319 49
AnnaBridge 187:0387e8f68319 50 /* Initialize segments */
AnnaBridge 187:0387e8f68319 51 #if defined(__CC_ARM) || (defined(__ARMCC_VERSION) && (__ARMCC_VERSION >= 6010050))
AnnaBridge 187:0387e8f68319 52 extern uint32_t Image$$ARM_LIB_STACK$$ZI$$Limit;
AnnaBridge 187:0387e8f68319 53 extern void __main(void);
AnnaBridge 187:0387e8f68319 54 #elif defined(__ICCARM__)
AnnaBridge 187:0387e8f68319 55 void __iar_program_start(void);
AnnaBridge 187:0387e8f68319 56 #elif defined(__GNUC__)
AnnaBridge 187:0387e8f68319 57 extern uint32_t __StackTop;
AnnaBridge 187:0387e8f68319 58 extern uint32_t __etext;
AnnaBridge 187:0387e8f68319 59 extern uint32_t __data_start__;
AnnaBridge 187:0387e8f68319 60 extern uint32_t __data_end__;
AnnaBridge 187:0387e8f68319 61 extern uint32_t __bss_start__;
AnnaBridge 187:0387e8f68319 62 extern uint32_t __bss_end__;
AnnaBridge 187:0387e8f68319 63
AnnaBridge 187:0387e8f68319 64 extern void uvisor_init(void);
AnnaBridge 187:0387e8f68319 65 #if defined(TOOLCHAIN_GCC_ARM)
AnnaBridge 187:0387e8f68319 66 extern void _start(void);
AnnaBridge 187:0387e8f68319 67 #else
AnnaBridge 187:0387e8f68319 68 #error("For GCC toolchain, only support GNU ARM Embedded")
AnnaBridge 187:0387e8f68319 69 #endif
AnnaBridge 187:0387e8f68319 70 #endif
AnnaBridge 187:0387e8f68319 71
AnnaBridge 187:0387e8f68319 72 /* Default empty handler */
AnnaBridge 187:0387e8f68319 73 void Default_Handler(void);
AnnaBridge 187:0387e8f68319 74
AnnaBridge 187:0387e8f68319 75 /* Reset handler */
AnnaBridge 187:0387e8f68319 76 void Reset_Handler(void);
AnnaBridge 187:0387e8f68319 77
AnnaBridge 187:0387e8f68319 78 /* Cortex-M0+ core handlers */
AnnaBridge 187:0387e8f68319 79 WEAK_ALIAS_FUNC(NMI_Handler, Default_Handler)
AnnaBridge 187:0387e8f68319 80 WEAK_ALIAS_FUNC(HardFault_Handler, Default_Handler)
AnnaBridge 187:0387e8f68319 81 WEAK_ALIAS_FUNC(SVC_Handler, Default_Handler)
AnnaBridge 187:0387e8f68319 82
AnnaBridge 187:0387e8f68319 83 WEAK_ALIAS_FUNC(PendSV_Handler, Default_Handler)
AnnaBridge 187:0387e8f68319 84 WEAK_ALIAS_FUNC(SysTick_Handler, Default_Handler)
AnnaBridge 187:0387e8f68319 85
AnnaBridge 187:0387e8f68319 86 /* Peripherals handlers */
AnnaBridge 187:0387e8f68319 87 WEAK_ALIAS_FUNC(BOD_IRQHandler, Default_Handler) // 0: Brown Out detection
AnnaBridge 187:0387e8f68319 88 WEAK_ALIAS_FUNC(IRC_IRQHandler, Default_Handler) // 1: Internal RC
AnnaBridge 187:0387e8f68319 89 WEAK_ALIAS_FUNC(PWRWU_IRQHandler, Default_Handler) // 2: Power down wake up
AnnaBridge 187:0387e8f68319 90 WEAK_ALIAS_FUNC(SRAM_IRQHandler, Default_Handler) // 3: SRAM
AnnaBridge 187:0387e8f68319 91 WEAK_ALIAS_FUNC(CLKFAIL_IRQHandler, Default_Handler) // 4: Clock detection fail
AnnaBridge 187:0387e8f68319 92 // 5: Reserved
AnnaBridge 187:0387e8f68319 93 WEAK_ALIAS_FUNC(RTC_IRQHandler, Default_Handler) // 6: Real Time Clock
AnnaBridge 187:0387e8f68319 94 WEAK_ALIAS_FUNC(TAMPER_IRQHandler, Default_Handler) // 7: Tamper detection
AnnaBridge 187:0387e8f68319 95 WEAK_ALIAS_FUNC(WDT_IRQHandler, Default_Handler) // 8: Watchdog timer
AnnaBridge 187:0387e8f68319 96 WEAK_ALIAS_FUNC(WWDT_IRQHandler, Default_Handler) // 9: Window watchdog timer
AnnaBridge 187:0387e8f68319 97 WEAK_ALIAS_FUNC(EINT0_IRQHandler, Default_Handler) // 10: External Input 0
AnnaBridge 187:0387e8f68319 98 WEAK_ALIAS_FUNC(EINT1_IRQHandler, Default_Handler) // 11: External Input 1
AnnaBridge 187:0387e8f68319 99 WEAK_ALIAS_FUNC(EINT2_IRQHandler, Default_Handler) // 12: External Input 2
AnnaBridge 187:0387e8f68319 100 WEAK_ALIAS_FUNC(EINT3_IRQHandler, Default_Handler) // 13: External Input 3
AnnaBridge 187:0387e8f68319 101 WEAK_ALIAS_FUNC(EINT4_IRQHandler, Default_Handler) // 14: External Input 4
AnnaBridge 187:0387e8f68319 102 WEAK_ALIAS_FUNC(EINT5_IRQHandler, Default_Handler) // 15: External Input 5
AnnaBridge 187:0387e8f68319 103 WEAK_ALIAS_FUNC(GPA_IRQHandler, Default_Handler) // 16: GPIO Port A
AnnaBridge 187:0387e8f68319 104 WEAK_ALIAS_FUNC(GPB_IRQHandler, Default_Handler) // 17: GPIO Port B
AnnaBridge 187:0387e8f68319 105 WEAK_ALIAS_FUNC(GPC_IRQHandler, Default_Handler) // 18: GPIO Port C
AnnaBridge 187:0387e8f68319 106 WEAK_ALIAS_FUNC(GPD_IRQHandler, Default_Handler) // 19: GPIO Port D
AnnaBridge 187:0387e8f68319 107 WEAK_ALIAS_FUNC(GPE_IRQHandler, Default_Handler) // 20: GPIO Port E
AnnaBridge 187:0387e8f68319 108 WEAK_ALIAS_FUNC(GPF_IRQHandler, Default_Handler) // 21: GPIO Port F
AnnaBridge 187:0387e8f68319 109 WEAK_ALIAS_FUNC(QSPI0_IRQHandler, Default_Handler) // 22: SPI0
AnnaBridge 187:0387e8f68319 110 WEAK_ALIAS_FUNC(SPI0_IRQHandler, Default_Handler) // 23: SPI1
AnnaBridge 187:0387e8f68319 111 WEAK_ALIAS_FUNC(BRAKE0_IRQHandler, Default_Handler) // 24:
AnnaBridge 187:0387e8f68319 112 WEAK_ALIAS_FUNC(EPWM0_P0_IRQHandler, Default_Handler) // 25:
AnnaBridge 187:0387e8f68319 113 WEAK_ALIAS_FUNC(EPWM0_P1_IRQHandler, Default_Handler) // 26:
AnnaBridge 187:0387e8f68319 114 WEAK_ALIAS_FUNC(EPWM0_P2_IRQHandler, Default_Handler) // 27:
AnnaBridge 187:0387e8f68319 115 WEAK_ALIAS_FUNC(BRAKE1_IRQHandler, Default_Handler) // 28:
AnnaBridge 187:0387e8f68319 116 WEAK_ALIAS_FUNC(EPWM1_P0_IRQHandler, Default_Handler) // 29:
AnnaBridge 187:0387e8f68319 117 WEAK_ALIAS_FUNC(EPWM1_P1_IRQHandler, Default_Handler) // 30:
AnnaBridge 187:0387e8f68319 118 WEAK_ALIAS_FUNC(EPWM1_P2_IRQHandler, Default_Handler) // 31:
AnnaBridge 187:0387e8f68319 119 WEAK_ALIAS_FUNC(TMR0_IRQHandler, Default_Handler) // 32: Timer 0
AnnaBridge 187:0387e8f68319 120 WEAK_ALIAS_FUNC(TMR1_IRQHandler, Default_Handler) // 33: Timer 1
AnnaBridge 187:0387e8f68319 121 WEAK_ALIAS_FUNC(TMR2_IRQHandler, Default_Handler) // 34: Timer 2
AnnaBridge 187:0387e8f68319 122 WEAK_ALIAS_FUNC(TMR3_IRQHandler, Default_Handler) // 35: Timer 3
AnnaBridge 187:0387e8f68319 123 WEAK_ALIAS_FUNC(UART0_IRQHandler, Default_Handler) // 36: UART0
AnnaBridge 187:0387e8f68319 124 WEAK_ALIAS_FUNC(UART1_IRQHandler, Default_Handler) // 37: UART1
AnnaBridge 187:0387e8f68319 125 WEAK_ALIAS_FUNC(I2C0_IRQHandler, Default_Handler) // 38: I2C0
AnnaBridge 187:0387e8f68319 126 WEAK_ALIAS_FUNC(I2C1_IRQHandler, Default_Handler) // 39: I2C1
AnnaBridge 187:0387e8f68319 127 WEAK_ALIAS_FUNC(PDMA0_IRQHandler, Default_Handler) // 40: Peripheral DMA
AnnaBridge 187:0387e8f68319 128 WEAK_ALIAS_FUNC(DAC_IRQHandler, Default_Handler) // 41: DAC
AnnaBridge 187:0387e8f68319 129 WEAK_ALIAS_FUNC(EADC0_IRQHandler, Default_Handler) // 42: ADC0 interrupt source 0
AnnaBridge 187:0387e8f68319 130 WEAK_ALIAS_FUNC(EADC1_IRQHandler, Default_Handler) // 43: ADC0 interrupt source 1
AnnaBridge 187:0387e8f68319 131 WEAK_ALIAS_FUNC(ACMP01_IRQHandler, Default_Handler) // 44: ACMP0 and ACMP1
AnnaBridge 187:0387e8f68319 132 // 45: Reserved
AnnaBridge 187:0387e8f68319 133 WEAK_ALIAS_FUNC(EADC2_IRQHandler, Default_Handler) // 46: ADC0 interrupt source 2
AnnaBridge 187:0387e8f68319 134 WEAK_ALIAS_FUNC(EADC3_IRQHandler, Default_Handler) // 47: ADC0 interrupt source 3
AnnaBridge 187:0387e8f68319 135 WEAK_ALIAS_FUNC(UART2_IRQHandler, Default_Handler) // 48: UART2
AnnaBridge 187:0387e8f68319 136 WEAK_ALIAS_FUNC(UART3_IRQHandler, Default_Handler) // 49: UART3
AnnaBridge 187:0387e8f68319 137 // 50: Reserved
AnnaBridge 187:0387e8f68319 138 WEAK_ALIAS_FUNC(SPI1_IRQHandler, Default_Handler) // 51: SPI1
AnnaBridge 187:0387e8f68319 139 WEAK_ALIAS_FUNC(SPI2_IRQHandler, Default_Handler) // 52: SPI2
AnnaBridge 187:0387e8f68319 140 WEAK_ALIAS_FUNC(USBD_IRQHandler, Default_Handler) // 53: USB device
AnnaBridge 187:0387e8f68319 141 WEAK_ALIAS_FUNC(USBH_IRQHandler, Default_Handler) // 54: USB host
AnnaBridge 187:0387e8f68319 142 WEAK_ALIAS_FUNC(USBOTG_IRQHandler, Default_Handler) // 55: USB OTG
AnnaBridge 187:0387e8f68319 143 WEAK_ALIAS_FUNC(CAN0_IRQHandler, Default_Handler) // 56: CAN0
AnnaBridge 187:0387e8f68319 144 // 57: Reserved
AnnaBridge 187:0387e8f68319 145 WEAK_ALIAS_FUNC(SC0_IRQHandler, Default_Handler) // 58:
AnnaBridge 187:0387e8f68319 146 WEAK_ALIAS_FUNC(SC1_IRQHandler, Default_Handler) // 59:
AnnaBridge 187:0387e8f68319 147 WEAK_ALIAS_FUNC(SC2_IRQHandler, Default_Handler) // 60:
AnnaBridge 187:0387e8f68319 148 // 61:
AnnaBridge 187:0387e8f68319 149 WEAK_ALIAS_FUNC(SPI3_IRQHandler, Default_Handler) // 62:
AnnaBridge 187:0387e8f68319 150 // 63: Reserved
AnnaBridge 187:0387e8f68319 151 WEAK_ALIAS_FUNC(SDH0_IRQHandler, Default_Handler) // 64:
AnnaBridge 187:0387e8f68319 152 // 65 ~67: Reserved
AnnaBridge 187:0387e8f68319 153 WEAK_ALIAS_FUNC(I2S0_IRQHandler, Default_Handler) // 68:
AnnaBridge 187:0387e8f68319 154 // 69: Reserved
AnnaBridge 187:0387e8f68319 155 WEAK_ALIAS_FUNC(OPA0_IRQHandler, Default_Handler) // 70:
AnnaBridge 187:0387e8f68319 156 WEAK_ALIAS_FUNC(CRPT_IRQHandler, Default_Handler) // 71:
AnnaBridge 187:0387e8f68319 157 WEAK_ALIAS_FUNC(GPG_IRQHandler, Default_Handler) // 72:
AnnaBridge 187:0387e8f68319 158 WEAK_ALIAS_FUNC(EINT6_IRQHandler, Default_Handler) // 73:
AnnaBridge 187:0387e8f68319 159 WEAK_ALIAS_FUNC(UART4_IRQHandler, Default_Handler) // 74:
AnnaBridge 187:0387e8f68319 160 WEAK_ALIAS_FUNC(UART5_IRQHandler, Default_Handler) // 75:
AnnaBridge 187:0387e8f68319 161 WEAK_ALIAS_FUNC(USCI0_IRQHandler, Default_Handler) // 76:
AnnaBridge 187:0387e8f68319 162 WEAK_ALIAS_FUNC(USCI1_IRQHandler, Default_Handler) // 77:
AnnaBridge 187:0387e8f68319 163 WEAK_ALIAS_FUNC(BPWM0_IRQHandler, Default_Handler) // 78:
AnnaBridge 187:0387e8f68319 164 WEAK_ALIAS_FUNC(BPWM1_IRQHandler, Default_Handler) // 79:
AnnaBridge 187:0387e8f68319 165 // 80~81: Reserved
AnnaBridge 187:0387e8f68319 166 WEAK_ALIAS_FUNC(I2C2_IRQHandler, Default_Handler) // 82:
AnnaBridge 187:0387e8f68319 167 // 83: Reserved
AnnaBridge 187:0387e8f68319 168 WEAK_ALIAS_FUNC(QEI0_IRQHandler, Default_Handler) // 84:
AnnaBridge 187:0387e8f68319 169 WEAK_ALIAS_FUNC(QEI1_IRQHandler, Default_Handler) // 85:
AnnaBridge 187:0387e8f68319 170 WEAK_ALIAS_FUNC(ECAP0_IRQHandler, Default_Handler) // 86:
AnnaBridge 187:0387e8f68319 171 WEAK_ALIAS_FUNC(ECAP1_IRQHandler, Default_Handler) // 87:
AnnaBridge 187:0387e8f68319 172 WEAK_ALIAS_FUNC(GPH_IRQHandler, Default_Handler) // 88:
AnnaBridge 187:0387e8f68319 173 WEAK_ALIAS_FUNC(EINT7_IRQHandler, Default_Handler) // 89:
AnnaBridge 187:0387e8f68319 174 // 90~95: Reserved
AnnaBridge 187:0387e8f68319 175 WEAK_ALIAS_FUNC(SPI5_IRQHandler, Default_Handler) // 96:
AnnaBridge 187:0387e8f68319 176 WEAK_ALIAS_FUNC(DSRC_IRQHandler, Default_Handler) // 97:
AnnaBridge 187:0387e8f68319 177 WEAK_ALIAS_FUNC(PDMA1_IRQHandler, Default_Handler) // 98:
AnnaBridge 187:0387e8f68319 178 WEAK_ALIAS_FUNC(SCU_IRQHandler, Default_Handler) // 99:
AnnaBridge 187:0387e8f68319 179 // 100: Reserved
AnnaBridge 187:0387e8f68319 180 WEAK_ALIAS_FUNC(TRNG_IRQHandler, Default_Handler) // 101:
AnnaBridge 187:0387e8f68319 181
AnnaBridge 187:0387e8f68319 182
AnnaBridge 187:0387e8f68319 183 /* Vector table */
AnnaBridge 187:0387e8f68319 184 #if defined(__CC_ARM) || (defined(__ARMCC_VERSION) && (__ARMCC_VERSION >= 6010050))
AnnaBridge 187:0387e8f68319 185 __attribute__ ((section("RESET")))
AnnaBridge 187:0387e8f68319 186 const uint32_t __vector_handlers[] = {
AnnaBridge 187:0387e8f68319 187 #elif defined(__ICCARM__)
AnnaBridge 187:0387e8f68319 188 extern uint32_t CSTACK$$Limit;
AnnaBridge 187:0387e8f68319 189 const uint32_t __vector_table[] @ ".intvec" = {
AnnaBridge 187:0387e8f68319 190 #elif defined(__GNUC__)
AnnaBridge 187:0387e8f68319 191 __attribute__ ((section(".vector_table")))
AnnaBridge 187:0387e8f68319 192 const uint32_t __vector_handlers[] = {
AnnaBridge 187:0387e8f68319 193 #endif
AnnaBridge 187:0387e8f68319 194
AnnaBridge 187:0387e8f68319 195 /* Configure Initial Stack Pointer, using linker-generated symbols */
AnnaBridge 187:0387e8f68319 196 #if defined(__CC_ARM) || (defined(__ARMCC_VERSION) && (__ARMCC_VERSION >= 6010050))
AnnaBridge 187:0387e8f68319 197 (uint32_t) &Image$$ARM_LIB_STACK$$ZI$$Limit,
AnnaBridge 187:0387e8f68319 198 #elif defined(__ICCARM__)
AnnaBridge 187:0387e8f68319 199 //(uint32_t) __sfe("CSTACK"),
AnnaBridge 187:0387e8f68319 200 (uint32_t) &CSTACK$$Limit,
AnnaBridge 187:0387e8f68319 201 #elif defined(__GNUC__)
AnnaBridge 187:0387e8f68319 202 (uint32_t) &__StackTop,
AnnaBridge 187:0387e8f68319 203 #endif
AnnaBridge 187:0387e8f68319 204
AnnaBridge 187:0387e8f68319 205 (uint32_t) Reset_Handler, // Reset Handler
AnnaBridge 187:0387e8f68319 206 (uint32_t) NMI_Handler, // NMI Handler
AnnaBridge 187:0387e8f68319 207 (uint32_t) HardFault_Handler, // Hard Fault Handler
AnnaBridge 187:0387e8f68319 208 0, // Reserved
AnnaBridge 187:0387e8f68319 209 0, // Reserved
AnnaBridge 187:0387e8f68319 210 0, // Reserved
AnnaBridge 187:0387e8f68319 211 0, // Reserved
AnnaBridge 187:0387e8f68319 212 0, // Reserved
AnnaBridge 187:0387e8f68319 213 0, // Reserved
AnnaBridge 187:0387e8f68319 214 0, // Reserved
AnnaBridge 187:0387e8f68319 215 (uint32_t) SVC_Handler, // SVCall Handler
AnnaBridge 187:0387e8f68319 216 0, // Reserved
AnnaBridge 187:0387e8f68319 217 0, // Reserved
AnnaBridge 187:0387e8f68319 218 (uint32_t) PendSV_Handler, // PendSV Handler
AnnaBridge 187:0387e8f68319 219 (uint32_t) SysTick_Handler, // SysTick Handler
AnnaBridge 187:0387e8f68319 220
AnnaBridge 187:0387e8f68319 221 /* External Interrupts */
AnnaBridge 187:0387e8f68319 222 (uint32_t) BOD_IRQHandler, // 0: Brown Out detection
AnnaBridge 187:0387e8f68319 223 (uint32_t) IRC_IRQHandler, // 1: Internal RC
AnnaBridge 187:0387e8f68319 224 (uint32_t) PWRWU_IRQHandler, // 2: Power down wake up
AnnaBridge 187:0387e8f68319 225 (uint32_t) SRAM_IRQHandler, // 3:
AnnaBridge 187:0387e8f68319 226 (uint32_t) CLKFAIL_IRQHandler, // 4: Clock detection fail
AnnaBridge 187:0387e8f68319 227 (uint32_t) Default_Handler, // 5: Reserved
AnnaBridge 187:0387e8f68319 228 (uint32_t) RTC_IRQHandler, // 6: Real Time Clock
AnnaBridge 187:0387e8f68319 229 (uint32_t) TAMPER_IRQHandler, // 7: Tamper detection
AnnaBridge 187:0387e8f68319 230 (uint32_t) WDT_IRQHandler, // 8: Watchdog timer
AnnaBridge 187:0387e8f68319 231 (uint32_t) WWDT_IRQHandler, // 9: Window watchdog timer
AnnaBridge 187:0387e8f68319 232 (uint32_t) EINT0_IRQHandler, // 10: External Input 0
AnnaBridge 187:0387e8f68319 233 (uint32_t) EINT1_IRQHandler, // 11: External Input 1
AnnaBridge 187:0387e8f68319 234 (uint32_t) EINT2_IRQHandler, // 12: External Input 2
AnnaBridge 187:0387e8f68319 235 (uint32_t) EINT3_IRQHandler, // 13: External Input 3
AnnaBridge 187:0387e8f68319 236 (uint32_t) EINT4_IRQHandler, // 14: External Input 4
AnnaBridge 187:0387e8f68319 237 (uint32_t) EINT5_IRQHandler, // 15: External Input 5
AnnaBridge 187:0387e8f68319 238 (uint32_t) GPA_IRQHandler, // 16: GPIO Port A
AnnaBridge 187:0387e8f68319 239 (uint32_t) GPB_IRQHandler, // 17: GPIO Port B
AnnaBridge 187:0387e8f68319 240 (uint32_t) GPC_IRQHandler, // 18: GPIO Port C
AnnaBridge 187:0387e8f68319 241 (uint32_t) GPD_IRQHandler, // 19: GPIO Port D
AnnaBridge 187:0387e8f68319 242 (uint32_t) GPE_IRQHandler, // 20: GPIO Port E
AnnaBridge 187:0387e8f68319 243 (uint32_t) GPF_IRQHandler, // 21: GPIO Port F
AnnaBridge 187:0387e8f68319 244 (uint32_t) QSPI0_IRQHandler, // 22: QSPI0
AnnaBridge 187:0387e8f68319 245 (uint32_t) SPI0_IRQHandler, // 23: SPI0
AnnaBridge 187:0387e8f68319 246 (uint32_t) BRAKE0_IRQHandler, // 24:
AnnaBridge 187:0387e8f68319 247 (uint32_t) EPWM0_P0_IRQHandler, // 25:
AnnaBridge 187:0387e8f68319 248 (uint32_t) EPWM0_P1_IRQHandler, // 26:
AnnaBridge 187:0387e8f68319 249 (uint32_t) EPWM0_P2_IRQHandler, // 27:
AnnaBridge 187:0387e8f68319 250 (uint32_t) BRAKE1_IRQHandler, // 28:
AnnaBridge 187:0387e8f68319 251 (uint32_t) EPWM1_P0_IRQHandler, // 29:
AnnaBridge 187:0387e8f68319 252 (uint32_t) EPWM1_P1_IRQHandler, // 30:
AnnaBridge 187:0387e8f68319 253 (uint32_t) EPWM1_P2_IRQHandler, // 31:
AnnaBridge 187:0387e8f68319 254 (uint32_t) TMR0_IRQHandler, // 32: Timer 0
AnnaBridge 187:0387e8f68319 255 (uint32_t) TMR1_IRQHandler, // 33: Timer 1
AnnaBridge 187:0387e8f68319 256 (uint32_t) TMR2_IRQHandler, // 34: Timer 2
AnnaBridge 187:0387e8f68319 257 (uint32_t) TMR3_IRQHandler, // 35: Timer 3
AnnaBridge 187:0387e8f68319 258 (uint32_t) UART0_IRQHandler, // 36: UART0
AnnaBridge 187:0387e8f68319 259 (uint32_t) UART1_IRQHandler, // 37: UART1
AnnaBridge 187:0387e8f68319 260 (uint32_t) I2C0_IRQHandler, // 38: I2C0
AnnaBridge 187:0387e8f68319 261 (uint32_t) I2C1_IRQHandler, // 39: I2C1
AnnaBridge 187:0387e8f68319 262 (uint32_t) PDMA0_IRQHandler, // 40: Peripheral DMA
AnnaBridge 187:0387e8f68319 263 (uint32_t) DAC_IRQHandler, // 41: DAC
AnnaBridge 187:0387e8f68319 264 (uint32_t) EADC0_IRQHandler, // 42: ADC0 interrupt source 0
AnnaBridge 187:0387e8f68319 265 (uint32_t) EADC1_IRQHandler, // 43: ADC0 interrupt source 1
AnnaBridge 187:0387e8f68319 266 (uint32_t) ACMP01_IRQHandler, // 44: ACMP0 and ACMP1
AnnaBridge 187:0387e8f68319 267 (uint32_t) Default_Handler, // 45: Reserved
AnnaBridge 187:0387e8f68319 268 (uint32_t) EADC2_IRQHandler, // 46: ADC0 interrupt source 2
AnnaBridge 187:0387e8f68319 269 (uint32_t) EADC3_IRQHandler, // 47: ADC0 interrupt source 3
AnnaBridge 187:0387e8f68319 270 (uint32_t) UART2_IRQHandler, // 48: UART2
AnnaBridge 187:0387e8f68319 271 (uint32_t) UART3_IRQHandler, // 49: UART3
AnnaBridge 187:0387e8f68319 272 (uint32_t) Default_Handler, // 50: Reserved
AnnaBridge 187:0387e8f68319 273 (uint32_t) SPI1_IRQHandler, // 51: SPI1
AnnaBridge 187:0387e8f68319 274 (uint32_t) SPI2_IRQHandler, // 52: SPI2
AnnaBridge 187:0387e8f68319 275 (uint32_t) USBD_IRQHandler, // 53: USB device
AnnaBridge 187:0387e8f68319 276 (uint32_t) USBH_IRQHandler, // 54: USB host
AnnaBridge 187:0387e8f68319 277 (uint32_t) USBOTG_IRQHandler, // 55: USB OTG
AnnaBridge 187:0387e8f68319 278 (uint32_t) CAN0_IRQHandler, // 56: CAN0
AnnaBridge 187:0387e8f68319 279 (uint32_t) Default_Handler, // 57: Reserved
AnnaBridge 187:0387e8f68319 280 (uint32_t) SC0_IRQHandler, // 58:
AnnaBridge 187:0387e8f68319 281 (uint32_t) SC1_IRQHandler, // 59:
AnnaBridge 187:0387e8f68319 282 (uint32_t) SC2_IRQHandler, // 60:
AnnaBridge 187:0387e8f68319 283 (uint32_t) Default_Handler, // 61: Reserved.
AnnaBridge 187:0387e8f68319 284 (uint32_t) SPI3_IRQHandler, // 62:
AnnaBridge 187:0387e8f68319 285 (uint32_t) Default_Handler, // 63:
AnnaBridge 187:0387e8f68319 286 (uint32_t) SDH0_IRQHandler, // 64:
AnnaBridge 187:0387e8f68319 287 (uint32_t) Default_Handler, // 65:
AnnaBridge 187:0387e8f68319 288 (uint32_t) Default_Handler, // 66:
AnnaBridge 187:0387e8f68319 289 (uint32_t) Default_Handler, // 67:
AnnaBridge 187:0387e8f68319 290 (uint32_t) I2S0_IRQHandler, // 68:
AnnaBridge 187:0387e8f68319 291 (uint32_t) Default_Handler, // 69:
AnnaBridge 187:0387e8f68319 292 (uint32_t) OPA0_IRQHandler, // 70:
AnnaBridge 187:0387e8f68319 293 (uint32_t) CRPT_IRQHandler, // 71:
AnnaBridge 187:0387e8f68319 294 (uint32_t) GPG_IRQHandler, // 72:
AnnaBridge 187:0387e8f68319 295 (uint32_t) EINT6_IRQHandler, // 73:
AnnaBridge 187:0387e8f68319 296 (uint32_t) UART4_IRQHandler, // 74:
AnnaBridge 187:0387e8f68319 297 (uint32_t) UART5_IRQHandler, // 75:
AnnaBridge 187:0387e8f68319 298 (uint32_t) USCI0_IRQHandler, // 76:
AnnaBridge 187:0387e8f68319 299 (uint32_t) USCI1_IRQHandler, // 77:
AnnaBridge 187:0387e8f68319 300 (uint32_t) BPWM0_IRQHandler, // 78:
AnnaBridge 187:0387e8f68319 301 (uint32_t) BPWM1_IRQHandler, // 79:
AnnaBridge 187:0387e8f68319 302 (uint32_t) Default_Handler, // 80:
AnnaBridge 187:0387e8f68319 303 (uint32_t) Default_Handler, // 81:
AnnaBridge 187:0387e8f68319 304 (uint32_t) I2C2_IRQHandler, // 82:
AnnaBridge 187:0387e8f68319 305 (uint32_t) Default_Handler, // 83:
AnnaBridge 187:0387e8f68319 306 (uint32_t) QEI0_IRQHandler, // 84:
AnnaBridge 187:0387e8f68319 307 (uint32_t) QEI1_IRQHandler, // 85:
AnnaBridge 187:0387e8f68319 308 (uint32_t) ECAP0_IRQHandler, // 86:
AnnaBridge 187:0387e8f68319 309 (uint32_t) ECAP1_IRQHandler, // 87:
AnnaBridge 187:0387e8f68319 310 (uint32_t) GPH_IRQHandler, // 88:
AnnaBridge 187:0387e8f68319 311 (uint32_t) EINT7_IRQHandler, // 89:
AnnaBridge 187:0387e8f68319 312 (uint32_t) Default_Handler, // 90:
AnnaBridge 187:0387e8f68319 313 (uint32_t) Default_Handler, // 91:
AnnaBridge 187:0387e8f68319 314 (uint32_t) Default_Handler, // 92:
AnnaBridge 187:0387e8f68319 315 (uint32_t) Default_Handler, // 93:
AnnaBridge 187:0387e8f68319 316 (uint32_t) Default_Handler, // 94:
AnnaBridge 187:0387e8f68319 317 (uint32_t) Default_Handler, // 95:
AnnaBridge 187:0387e8f68319 318 (uint32_t) SPI5_IRQHandler, // 96:
AnnaBridge 187:0387e8f68319 319 (uint32_t) DSRC_IRQHandler, // 97:
AnnaBridge 187:0387e8f68319 320 (uint32_t) PDMA1_IRQHandler, // 98:
AnnaBridge 187:0387e8f68319 321 (uint32_t) SCU_IRQHandler, // 99:
AnnaBridge 187:0387e8f68319 322 (uint32_t) Default_Handler, // 100:
AnnaBridge 187:0387e8f68319 323 (uint32_t) TRNG_IRQHandler, // 101:
AnnaBridge 187:0387e8f68319 324 };
AnnaBridge 187:0387e8f68319 325
AnnaBridge 187:0387e8f68319 326 /**
AnnaBridge 187:0387e8f68319 327 * \brief This is the code that gets called on processor reset.
AnnaBridge 187:0387e8f68319 328 */
AnnaBridge 187:0387e8f68319 329 void Reset_Handler(void)
AnnaBridge 187:0387e8f68319 330 {
AnnaBridge 187:0387e8f68319 331 #if defined (__ARM_FEATURE_CMSE) && (__ARM_FEATURE_CMSE == 3U)
AnnaBridge 187:0387e8f68319 332 /* Disable register write-protection function */
AnnaBridge 187:0387e8f68319 333 SYS_UnlockReg();
AnnaBridge 187:0387e8f68319 334
AnnaBridge 187:0387e8f68319 335 /* Disable Power-on Reset function */
AnnaBridge 187:0387e8f68319 336 SYS_DISABLE_POR();
AnnaBridge 187:0387e8f68319 337
AnnaBridge 187:0387e8f68319 338 /* Enable register write-protection function */
AnnaBridge 187:0387e8f68319 339 SYS_LockReg();
AnnaBridge 187:0387e8f68319 340 #endif
AnnaBridge 187:0387e8f68319 341
AnnaBridge 187:0387e8f68319 342 /**
AnnaBridge 187:0387e8f68319 343 * SystemInit() must be called at the very start.
AnnaBridge 187:0387e8f68319 344 */
AnnaBridge 187:0387e8f68319 345 SystemInit();
AnnaBridge 187:0387e8f68319 346
AnnaBridge 187:0387e8f68319 347 #if defined(__CC_ARM) || (defined(__ARMCC_VERSION) && (__ARMCC_VERSION >= 6010050))
AnnaBridge 187:0387e8f68319 348 __main();
AnnaBridge 187:0387e8f68319 349
AnnaBridge 187:0387e8f68319 350 #elif defined(__ICCARM__)
AnnaBridge 187:0387e8f68319 351 __iar_program_start();
AnnaBridge 187:0387e8f68319 352
AnnaBridge 187:0387e8f68319 353 #elif defined(__GNUC__)
AnnaBridge 187:0387e8f68319 354 uint32_t *src_ind = (uint32_t *) &__etext;
AnnaBridge 187:0387e8f68319 355 uint32_t *dst_ind = (uint32_t *) &__data_start__;
AnnaBridge 187:0387e8f68319 356 uint32_t *dst_end = (uint32_t *) &__data_end__;
AnnaBridge 187:0387e8f68319 357
AnnaBridge 187:0387e8f68319 358 /* Move .data section from ROM to RAM */
AnnaBridge 187:0387e8f68319 359 if (src_ind != dst_ind) {
AnnaBridge 187:0387e8f68319 360 for (; dst_ind < dst_end;) {
AnnaBridge 187:0387e8f68319 361 *dst_ind ++ = *src_ind ++;
AnnaBridge 187:0387e8f68319 362 }
AnnaBridge 187:0387e8f68319 363 }
AnnaBridge 187:0387e8f68319 364
AnnaBridge 187:0387e8f68319 365 /* Initialize .bss section to zero */
AnnaBridge 187:0387e8f68319 366 dst_ind = (uint32_t *) &__bss_start__;
AnnaBridge 187:0387e8f68319 367 dst_end = (uint32_t *) &__bss_end__;
AnnaBridge 187:0387e8f68319 368 if (dst_ind != dst_end) {
AnnaBridge 187:0387e8f68319 369 for (; dst_ind < dst_end;) {
AnnaBridge 187:0387e8f68319 370 *dst_ind ++ = 0;
AnnaBridge 187:0387e8f68319 371 }
AnnaBridge 187:0387e8f68319 372 }
AnnaBridge 187:0387e8f68319 373
AnnaBridge 187:0387e8f68319 374 _start();
AnnaBridge 187:0387e8f68319 375
AnnaBridge 187:0387e8f68319 376 #endif
AnnaBridge 187:0387e8f68319 377
AnnaBridge 187:0387e8f68319 378 /* Infinite loop */
AnnaBridge 187:0387e8f68319 379 while (1);
AnnaBridge 187:0387e8f68319 380 }
AnnaBridge 187:0387e8f68319 381
AnnaBridge 187:0387e8f68319 382 /**
AnnaBridge 187:0387e8f68319 383 * \brief Default interrupt handler for unused IRQs.
AnnaBridge 187:0387e8f68319 384 */
AnnaBridge 187:0387e8f68319 385 void Default_Handler(void)
AnnaBridge 187:0387e8f68319 386 {
AnnaBridge 187:0387e8f68319 387 while (1);
AnnaBridge 187:0387e8f68319 388 }
AnnaBridge 187:0387e8f68319 389
AnnaBridge 187:0387e8f68319 390 #if 0
AnnaBridge 187:0387e8f68319 391 #if defined(__CC_ARM)
AnnaBridge 187:0387e8f68319 392 uint32_t GetPC(void)
AnnaBridge 187:0387e8f68319 393 {
AnnaBridge 187:0387e8f68319 394 uint32_t val=0;
AnnaBridge 187:0387e8f68319 395 __asm {
AnnaBridge 187:0387e8f68319 396 MOV R0, #0 // dumy
AnnaBridge 187:0387e8f68319 397 //MOV R0, LR // Except R0~R12, SP/LR/PC cannot be read or directly modified in inline assembly code
AnnaBridge 187:0387e8f68319 398 MOV val, R0
AnnaBridge 187:0387e8f68319 399 }
AnnaBridge 187:0387e8f68319 400 return val;
AnnaBridge 187:0387e8f68319 401 }
AnnaBridge 187:0387e8f68319 402 #endif
AnnaBridge 187:0387e8f68319 403 #endif