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:
188:bcfe06ba3d64
mbed library release version 165

Who changed what in which revision?

UserRevisionLine numberNew contents of line
<> 149:156823d33999 1 /******************************************************************************
<> 149:156823d33999 2 * @file startup_M451Series.c
<> 149:156823d33999 3 * @version V0.10
<> 149:156823d33999 4 * $Revision: 11 $
<> 149:156823d33999 5 * $Date: 15/09/02 10:02a $
<> 149:156823d33999 6 * @brief CMSIS Cortex-M4 Core Peripheral Access Layer Source File for M451 Series MCU
<> 149:156823d33999 7 *
<> 149:156823d33999 8 * @note
<> 149:156823d33999 9 * Copyright (C) 2013~2015 Nuvoton Technology Corp. All rights reserved.
<> 149:156823d33999 10 *****************************************************************************/
<> 149:156823d33999 11
<> 149:156823d33999 12 #include "M451Series.h"
<> 149:156823d33999 13
<> 149:156823d33999 14 /* Suppress warning messages */
<> 149:156823d33999 15 #if defined(__CC_ARM)
<> 149:156823d33999 16 // Suppress warning message: extended constant initialiser used
<> 149:156823d33999 17 #pragma diag_suppress 1296
<> 149:156823d33999 18 #elif defined(__ICCARM__)
<> 149:156823d33999 19 #elif defined(__GNUC__)
<> 149:156823d33999 20 #endif
<> 149:156823d33999 21
<> 149:156823d33999 22 /* Macro Definitions */
<> 149:156823d33999 23 #if defined(__CC_ARM)
<> 149:156823d33999 24 #define WEAK __attribute__ ((weak))
<> 149:156823d33999 25 #define ALIAS(f) __attribute__ ((weak, alias(#f)))
<> 149:156823d33999 26
<> 149:156823d33999 27 #define WEAK_ALIAS_FUNC(FUN, FUN_ALIAS) \
<> 149:156823d33999 28 void FUN(void) __attribute__ ((weak, alias(#FUN_ALIAS)));
<> 149:156823d33999 29
<> 149:156823d33999 30 #elif defined(__ICCARM__)
<> 149:156823d33999 31 //#define STRINGIFY(x) #x
<> 149:156823d33999 32 //#define _STRINGIFY(x) STRINGIFY(x)
<> 149:156823d33999 33 #define WEAK_ALIAS_FUNC(FUN, FUN_ALIAS) \
<> 149:156823d33999 34 void FUN(void); \
<> 149:156823d33999 35 _Pragma(_STRINGIFY(_WEAK_ALIAS_FUNC(FUN, FUN_ALIAS)))
<> 149:156823d33999 36 #define _WEAK_ALIAS_FUNC(FUN, FUN_ALIAS) weak __WEAK_ALIAS_FUNC(FUN, FUN_ALIAS)
<> 149:156823d33999 37 #define __WEAK_ALIAS_FUNC(FUN, FUN_ALIAS) FUN##=##FUN_ALIAS
<> 149:156823d33999 38
<> 149:156823d33999 39 #elif defined(__GNUC__)
<> 149:156823d33999 40 #define WEAK __attribute__ ((weak))
<> 149:156823d33999 41 #define ALIAS(f) __attribute__ ((weak, alias(#f)))
<> 149:156823d33999 42
<> 149:156823d33999 43 #define WEAK_ALIAS_FUNC(FUN, FUN_ALIAS) \
<> 149:156823d33999 44 void FUN(void) __attribute__ ((weak, alias(#FUN_ALIAS)));
<> 149:156823d33999 45
<> 149:156823d33999 46 #endif
<> 149:156823d33999 47
<> 149:156823d33999 48
<> 149:156823d33999 49 /* Initialize segments */
AnnaBridge 174:b96e65c34a4d 50 #if defined(__CC_ARM) || (defined(__ARMCC_VERSION) && (__ARMCC_VERSION >= 6010050))
<> 149:156823d33999 51 extern uint32_t Image$$ARM_LIB_STACK$$ZI$$Limit;
<> 149:156823d33999 52 extern void __main(void);
<> 149:156823d33999 53 #elif defined(__ICCARM__)
<> 149:156823d33999 54 void __iar_program_start(void);
<> 149:156823d33999 55 #elif defined(__GNUC__)
<> 149:156823d33999 56 extern uint32_t __StackTop;
<> 149:156823d33999 57 extern uint32_t __etext;
<> 149:156823d33999 58 extern uint32_t __data_start__;
<> 149:156823d33999 59 extern uint32_t __data_end__;
<> 149:156823d33999 60 extern uint32_t __bss_start__;
<> 149:156823d33999 61 extern uint32_t __bss_end__;
<> 149:156823d33999 62
AnnaBridge 172:7d866c31b3c5 63 #if defined(TOOLCHAIN_GCC_ARM)
AnnaBridge 172:7d866c31b3c5 64 extern void _start(void);
AnnaBridge 172:7d866c31b3c5 65 #else
AnnaBridge 172:7d866c31b3c5 66 #error("For GCC toolchain, only support GNU ARM Embedded")
AnnaBridge 172:7d866c31b3c5 67 #endif
<> 149:156823d33999 68 #endif
<> 149:156823d33999 69
<> 149:156823d33999 70 /* Default empty handler */
<> 149:156823d33999 71 void Default_Handler(void);
<> 149:156823d33999 72
<> 149:156823d33999 73 /* Reset handler */
<> 149:156823d33999 74 void Reset_Handler(void);
<> 149:156823d33999 75
<> 149:156823d33999 76 /* Cortex-M4 core handlers */
<> 149:156823d33999 77 WEAK_ALIAS_FUNC(NMI_Handler, Default_Handler)
<> 149:156823d33999 78 WEAK_ALIAS_FUNC(HardFault_Handler, Default_Handler)
<> 149:156823d33999 79 WEAK_ALIAS_FUNC(MemManage_Handler, Default_Handler)
<> 149:156823d33999 80 WEAK_ALIAS_FUNC(BusFault_Handler , Default_Handler)
<> 149:156823d33999 81 WEAK_ALIAS_FUNC(UsageFault_Handler, Default_Handler)
<> 149:156823d33999 82 WEAK_ALIAS_FUNC(SVC_Handler, Default_Handler)
<> 149:156823d33999 83 WEAK_ALIAS_FUNC(DebugMon_Handler, Default_Handler)
<> 149:156823d33999 84 WEAK_ALIAS_FUNC(PendSV_Handler, Default_Handler)
<> 149:156823d33999 85 WEAK_ALIAS_FUNC(SysTick_Handler, Default_Handler)
<> 149:156823d33999 86
<> 149:156823d33999 87 /* Peripherals handlers */
<> 149:156823d33999 88 WEAK_ALIAS_FUNC(BOD_IRQHandler, Default_Handler) // 0: Brown Out detection
<> 149:156823d33999 89 WEAK_ALIAS_FUNC(IRC_IRQHandler, Default_Handler) // 1: Internal RC
<> 149:156823d33999 90 WEAK_ALIAS_FUNC(PWRWU_IRQHandler, Default_Handler) // 2: Power down wake up
<> 149:156823d33999 91 WEAK_ALIAS_FUNC(RAMPE_IRQHandler, Default_Handler) // 3: RAM parity error
<> 149:156823d33999 92 WEAK_ALIAS_FUNC(CLKFAIL_IRQHandler, Default_Handler) // 4: Clock detection fail
<> 149:156823d33999 93 // 5: Reserved
<> 149:156823d33999 94 WEAK_ALIAS_FUNC(RTC_IRQHandler, Default_Handler) // 6: Real Time Clock
<> 149:156823d33999 95 WEAK_ALIAS_FUNC(TAMPER_IRQHandler, Default_Handler) // 7: Tamper detection
<> 149:156823d33999 96 WEAK_ALIAS_FUNC(WDT_IRQHandler, Default_Handler) // 8: Watchdog timer
<> 149:156823d33999 97 WEAK_ALIAS_FUNC(WWDT_IRQHandler, Default_Handler) // 9: Window watchdog timer
<> 149:156823d33999 98 WEAK_ALIAS_FUNC(EINT0_IRQHandler, Default_Handler) // 10: External Input 0
<> 149:156823d33999 99 WEAK_ALIAS_FUNC(EINT1_IRQHandler, Default_Handler) // 11: External Input 1
<> 149:156823d33999 100 WEAK_ALIAS_FUNC(EINT2_IRQHandler, Default_Handler) // 12: External Input 2
<> 149:156823d33999 101 WEAK_ALIAS_FUNC(EINT3_IRQHandler, Default_Handler) // 13: External Input 3
<> 149:156823d33999 102 WEAK_ALIAS_FUNC(EINT4_IRQHandler, Default_Handler) // 14: External Input 4
<> 149:156823d33999 103 WEAK_ALIAS_FUNC(EINT5_IRQHandler, Default_Handler) // 15: External Input 5
<> 149:156823d33999 104 WEAK_ALIAS_FUNC(GPA_IRQHandler, Default_Handler) // 16: GPIO Port A
<> 149:156823d33999 105 WEAK_ALIAS_FUNC(GPB_IRQHandler, Default_Handler) // 17: GPIO Port B
<> 149:156823d33999 106 WEAK_ALIAS_FUNC(GPC_IRQHandler, Default_Handler) // 18: GPIO Port C
<> 149:156823d33999 107 WEAK_ALIAS_FUNC(GPD_IRQHandler, Default_Handler) // 19: GPIO Port D
<> 149:156823d33999 108 WEAK_ALIAS_FUNC(GPE_IRQHandler, Default_Handler) // 20: GPIO Port E
<> 149:156823d33999 109 WEAK_ALIAS_FUNC(GPF_IRQHandler, Default_Handler) // 21: GPIO Port F
<> 149:156823d33999 110 WEAK_ALIAS_FUNC(SPI0_IRQHandler, Default_Handler) // 22: SPI0
<> 149:156823d33999 111 WEAK_ALIAS_FUNC(SPI1_IRQHandler, Default_Handler) // 23: SPI1
<> 149:156823d33999 112 WEAK_ALIAS_FUNC(BRAKE0_IRQHandler, Default_Handler) // 24:
<> 149:156823d33999 113 WEAK_ALIAS_FUNC(PWM0P0_IRQHandler, Default_Handler) // 25:
<> 149:156823d33999 114 WEAK_ALIAS_FUNC(PWM0P1_IRQHandler, Default_Handler) // 26:
<> 149:156823d33999 115 WEAK_ALIAS_FUNC(PWM0P2_IRQHandler, Default_Handler) // 27:
<> 149:156823d33999 116 WEAK_ALIAS_FUNC(BRAKE1_IRQHandler, Default_Handler) // 28:
<> 149:156823d33999 117 WEAK_ALIAS_FUNC(PWM1P0_IRQHandler, Default_Handler) // 29:
<> 149:156823d33999 118 WEAK_ALIAS_FUNC(PWM1P1_IRQHandler, Default_Handler) // 30:
<> 149:156823d33999 119 WEAK_ALIAS_FUNC(PWM1P2_IRQHandler, Default_Handler) // 31:
<> 149:156823d33999 120 WEAK_ALIAS_FUNC(TMR0_IRQHandler, Default_Handler) // 32: Timer 0
<> 149:156823d33999 121 WEAK_ALIAS_FUNC(TMR1_IRQHandler, Default_Handler) // 33: Timer 1
<> 149:156823d33999 122 WEAK_ALIAS_FUNC(TMR2_IRQHandler, Default_Handler) // 34: Timer 2
<> 149:156823d33999 123 WEAK_ALIAS_FUNC(TMR3_IRQHandler, Default_Handler) // 35: Timer 3
<> 149:156823d33999 124 WEAK_ALIAS_FUNC(UART0_IRQHandler, Default_Handler) // 36: UART0
<> 149:156823d33999 125 WEAK_ALIAS_FUNC(UART1_IRQHandler, Default_Handler) // 37: UART1
<> 149:156823d33999 126 WEAK_ALIAS_FUNC(I2C0_IRQHandler, Default_Handler) // 38: I2C0
<> 149:156823d33999 127 WEAK_ALIAS_FUNC(I2C1_IRQHandler, Default_Handler) // 39: I2C1
<> 149:156823d33999 128 WEAK_ALIAS_FUNC(PDMA_IRQHandler, Default_Handler) // 40: Peripheral DMA
<> 149:156823d33999 129 WEAK_ALIAS_FUNC(DAC_IRQHandler, Default_Handler) // 41: DAC
<> 149:156823d33999 130 WEAK_ALIAS_FUNC(ADC00_IRQHandler, Default_Handler) // 42: ADC0 interrupt source 0
<> 149:156823d33999 131 WEAK_ALIAS_FUNC(ADC01_IRQHandler, Default_Handler) // 43: ADC0 interrupt source 1
<> 149:156823d33999 132 WEAK_ALIAS_FUNC(ACMP01_IRQHandler, Default_Handler) // 44: ACMP0 and ACMP1
<> 149:156823d33999 133 // 45: Reserved
<> 149:156823d33999 134 WEAK_ALIAS_FUNC(ADC02_IRQHandler, Default_Handler) // 46: ADC0 interrupt source 2
<> 149:156823d33999 135 WEAK_ALIAS_FUNC(ADC03_IRQHandler, Default_Handler) // 47: ADC0 interrupt source 3
<> 149:156823d33999 136 WEAK_ALIAS_FUNC(UART2_IRQHandler, Default_Handler) // 48: UART2
<> 149:156823d33999 137 WEAK_ALIAS_FUNC(UART3_IRQHandler, Default_Handler) // 49: UART3
<> 149:156823d33999 138 // 50: Reserved
<> 149:156823d33999 139 WEAK_ALIAS_FUNC(SPI2_IRQHandler, Default_Handler) // 51: SPI2
<> 149:156823d33999 140 // 52: Reserved
<> 149:156823d33999 141 WEAK_ALIAS_FUNC(USBD_IRQHandler, Default_Handler) // 53: USB device
<> 149:156823d33999 142 WEAK_ALIAS_FUNC(USBH_IRQHandler, Default_Handler) // 54: USB host
<> 149:156823d33999 143 WEAK_ALIAS_FUNC(USBOTG_IRQHandler, Default_Handler) // 55: USB OTG
<> 149:156823d33999 144 WEAK_ALIAS_FUNC(CAN0_IRQHandler, Default_Handler) // 56: CAN0
<> 149:156823d33999 145 // 57: Reserved
<> 149:156823d33999 146 WEAK_ALIAS_FUNC(SC0_IRQHandler, Default_Handler) // 58:
<> 149:156823d33999 147 // 59: Reserved.
<> 149:156823d33999 148 // 60:
<> 149:156823d33999 149 // 61:
<> 149:156823d33999 150 // 62:
<> 149:156823d33999 151 WEAK_ALIAS_FUNC(TK_IRQHandler, Default_Handler) // 63:
<> 149:156823d33999 152
<> 149:156823d33999 153 /* Vector table */
AnnaBridge 174:b96e65c34a4d 154 #if defined(__CC_ARM) || (defined(__ARMCC_VERSION) && (__ARMCC_VERSION >= 6010050))
<> 149:156823d33999 155 __attribute__ ((section("RESET")))
<> 149:156823d33999 156 const uint32_t __vector_handlers[] = {
<> 149:156823d33999 157 #elif defined(__ICCARM__)
<> 149:156823d33999 158 extern uint32_t CSTACK$$Limit;
<> 149:156823d33999 159 const uint32_t __vector_table[] @ ".intvec" = {
<> 149:156823d33999 160 #elif defined(__GNUC__)
<> 149:156823d33999 161 __attribute__ ((section(".vector_table")))
<> 149:156823d33999 162 const uint32_t __vector_handlers[] = {
<> 149:156823d33999 163 #endif
<> 149:156823d33999 164
<> 149:156823d33999 165 /* Configure Initial Stack Pointer, using linker-generated symbols */
AnnaBridge 174:b96e65c34a4d 166 #if defined(__CC_ARM) || (defined(__ARMCC_VERSION) && (__ARMCC_VERSION >= 6010050))
<> 149:156823d33999 167 (uint32_t) &Image$$ARM_LIB_STACK$$ZI$$Limit,
<> 149:156823d33999 168 #elif defined(__ICCARM__)
<> 149:156823d33999 169 //(uint32_t) __sfe("CSTACK"),
<> 149:156823d33999 170 (uint32_t) &CSTACK$$Limit,
<> 149:156823d33999 171 #elif defined(__GNUC__)
<> 149:156823d33999 172 (uint32_t) &__StackTop,
<> 149:156823d33999 173 #endif
<> 149:156823d33999 174
<> 149:156823d33999 175 (uint32_t) Reset_Handler, // Reset Handler
<> 149:156823d33999 176 (uint32_t) NMI_Handler, // NMI Handler
<> 149:156823d33999 177 (uint32_t) HardFault_Handler, // Hard Fault Handler
<> 149:156823d33999 178 (uint32_t) MemManage_Handler, // MPU Fault Handler
<> 149:156823d33999 179 (uint32_t) BusFault_Handler, // Bus Fault Handler
<> 149:156823d33999 180 (uint32_t) UsageFault_Handler, // Usage Fault Handler
<> 149:156823d33999 181 0, // Reserved
<> 149:156823d33999 182 0, // Reserved
<> 149:156823d33999 183 0, // Reserved
<> 149:156823d33999 184 0, // Reserved
<> 149:156823d33999 185 (uint32_t) SVC_Handler, // SVCall Handler
<> 149:156823d33999 186 (uint32_t) DebugMon_Handler, // Debug Monitor Handler
<> 149:156823d33999 187 0, // Reserved
<> 149:156823d33999 188 (uint32_t) PendSV_Handler, // PendSV Handler
<> 149:156823d33999 189 (uint32_t) SysTick_Handler, // SysTick Handler
<> 149:156823d33999 190
<> 149:156823d33999 191 /* External Interrupts */
<> 149:156823d33999 192 (uint32_t) BOD_IRQHandler, // 0: Brown Out detection
<> 149:156823d33999 193 (uint32_t) IRC_IRQHandler, // 1: Internal RC
<> 149:156823d33999 194 (uint32_t) PWRWU_IRQHandler, // 2: Power down wake up
<> 149:156823d33999 195 (uint32_t) RAMPE_IRQHandler, // 3: RAM parity error
<> 149:156823d33999 196 (uint32_t) CLKFAIL_IRQHandler, // 4: Clock detection fail
<> 149:156823d33999 197 (uint32_t) Default_Handler, // 5: Reserved
<> 149:156823d33999 198 (uint32_t) RTC_IRQHandler, // 6: Real Time Clock
<> 149:156823d33999 199 (uint32_t) TAMPER_IRQHandler, // 7: Tamper detection
<> 149:156823d33999 200 (uint32_t) WDT_IRQHandler, // 8: Watchdog timer
<> 149:156823d33999 201 (uint32_t) WWDT_IRQHandler, // 9: Window watchdog timer
<> 149:156823d33999 202 (uint32_t) EINT0_IRQHandler, // 10: External Input 0
<> 149:156823d33999 203 (uint32_t) EINT1_IRQHandler, // 11: External Input 1
<> 149:156823d33999 204 (uint32_t) EINT2_IRQHandler, // 12: External Input 2
<> 149:156823d33999 205 (uint32_t) EINT3_IRQHandler, // 13: External Input 3
<> 149:156823d33999 206 (uint32_t) EINT4_IRQHandler, // 14: External Input 4
<> 149:156823d33999 207 (uint32_t) EINT5_IRQHandler, // 15: External Input 5
<> 149:156823d33999 208 (uint32_t) GPA_IRQHandler, // 16: GPIO Port A
<> 149:156823d33999 209 (uint32_t) GPB_IRQHandler, // 17: GPIO Port B
<> 149:156823d33999 210 (uint32_t) GPC_IRQHandler, // 18: GPIO Port C
<> 149:156823d33999 211 (uint32_t) GPD_IRQHandler, // 19: GPIO Port D
<> 149:156823d33999 212 (uint32_t) GPE_IRQHandler, // 20: GPIO Port E
<> 149:156823d33999 213 (uint32_t) GPF_IRQHandler, // 21: GPIO Port F
<> 149:156823d33999 214 (uint32_t) SPI0_IRQHandler, // 22: SPI0
<> 149:156823d33999 215 (uint32_t) SPI1_IRQHandler, // 23: SPI1
<> 149:156823d33999 216 (uint32_t) BRAKE0_IRQHandler, // 24:
<> 149:156823d33999 217 (uint32_t) PWM0P0_IRQHandler, // 25:
<> 149:156823d33999 218 (uint32_t) PWM0P1_IRQHandler, // 26:
<> 149:156823d33999 219 (uint32_t) PWM0P2_IRQHandler, // 27:
<> 149:156823d33999 220 (uint32_t) BRAKE1_IRQHandler, // 28:
<> 149:156823d33999 221 (uint32_t) PWM1P0_IRQHandler, // 29:
<> 149:156823d33999 222 (uint32_t) PWM1P1_IRQHandler, // 30:
<> 149:156823d33999 223 (uint32_t) PWM1P2_IRQHandler, // 31:
<> 149:156823d33999 224 (uint32_t) TMR0_IRQHandler, // 32: Timer 0
<> 149:156823d33999 225 (uint32_t) TMR1_IRQHandler, // 33: Timer 1
<> 149:156823d33999 226 (uint32_t) TMR2_IRQHandler, // 34: Timer 2
<> 149:156823d33999 227 (uint32_t) TMR3_IRQHandler, // 35: Timer 3
<> 149:156823d33999 228 (uint32_t) UART0_IRQHandler, // 36: UART0
<> 149:156823d33999 229 (uint32_t) UART1_IRQHandler, // 37: UART1
<> 149:156823d33999 230 (uint32_t) I2C0_IRQHandler, // 38: I2C0
<> 149:156823d33999 231 (uint32_t) I2C1_IRQHandler, // 39: I2C1
<> 149:156823d33999 232 (uint32_t) PDMA_IRQHandler, // 40: Peripheral DMA
<> 149:156823d33999 233 (uint32_t) DAC_IRQHandler, // 41: DAC
<> 149:156823d33999 234 (uint32_t) ADC00_IRQHandler, // 42: ADC0 interrupt source 0
<> 149:156823d33999 235 (uint32_t) ADC01_IRQHandler, // 43: ADC0 interrupt source 1
<> 149:156823d33999 236 (uint32_t) ACMP01_IRQHandler, // 44: ACMP0 and ACMP1
<> 149:156823d33999 237 (uint32_t) Default_Handler, // 45: Reserved
<> 149:156823d33999 238 (uint32_t) ADC02_IRQHandler, // 46: ADC0 interrupt source 2
<> 149:156823d33999 239 (uint32_t) ADC03_IRQHandler, // 47: ADC0 interrupt source 3
<> 149:156823d33999 240 (uint32_t) UART2_IRQHandler, // 48: UART2
<> 149:156823d33999 241 (uint32_t) UART3_IRQHandler, // 49: UART3
<> 149:156823d33999 242 (uint32_t) Default_Handler, // 50: Reserved
<> 149:156823d33999 243 (uint32_t) SPI2_IRQHandler, // 51: SPI2
<> 149:156823d33999 244 (uint32_t) Default_Handler, // 52: Reserved
<> 149:156823d33999 245 (uint32_t) USBD_IRQHandler, // 53: USB device
<> 149:156823d33999 246 (uint32_t) USBH_IRQHandler, // 54: USB host
<> 149:156823d33999 247 (uint32_t) USBOTG_IRQHandler, // 55: USB OTG
<> 149:156823d33999 248 (uint32_t) CAN0_IRQHandler, // 56: CAN0
<> 149:156823d33999 249 (uint32_t) Default_Handler, // 57: Reserved
<> 149:156823d33999 250 (uint32_t) SC0_IRQHandler, // 58:
<> 149:156823d33999 251 (uint32_t) Default_Handler, // 59: Reserved.
<> 149:156823d33999 252 (uint32_t) Default_Handler, // 60:
<> 149:156823d33999 253 (uint32_t) Default_Handler, // 61:
<> 149:156823d33999 254 (uint32_t) Default_Handler, // 62:
<> 149:156823d33999 255 (uint32_t) TK_IRQHandler, // 63:
<> 149:156823d33999 256 };
<> 149:156823d33999 257
<> 149:156823d33999 258 /**
<> 149:156823d33999 259 * \brief This is the code that gets called on processor reset.
<> 149:156823d33999 260 */
<> 149:156823d33999 261 void Reset_Handler(void)
<> 149:156823d33999 262 {
<> 149:156823d33999 263 /* Disable register write-protection function */
<> 149:156823d33999 264 SYS_UnlockReg();
<> 149:156823d33999 265
<> 149:156823d33999 266 /* Disable Power-on Reset function */
<> 149:156823d33999 267 SYS_DISABLE_POR();
<> 149:156823d33999 268
<> 149:156823d33999 269 /* HXT Crystal Type Select: INV */
<> 149:156823d33999 270 CLK->PWRCTL &= ~CLK_PWRCTL_HXTSELTYP_Msk;
<> 149:156823d33999 271
<> 149:156823d33999 272 /**
AnnaBridge 172:7d866c31b3c5 273 * NOTE 1: Unlock is required for perhaps some register access in SystemInit().
AnnaBridge 172:7d866c31b3c5 274 * NOTE 2: Because EBI (external SRAM) init is done in SystemInit(), SystemInit() must be called at the very start.
<> 149:156823d33999 275 */
<> 149:156823d33999 276 SystemInit();
<> 149:156823d33999 277
AnnaBridge 172:7d866c31b3c5 278 /* Enable register write-protection function */
AnnaBridge 172:7d866c31b3c5 279 SYS_LockReg();
AnnaBridge 172:7d866c31b3c5 280
AnnaBridge 174:b96e65c34a4d 281 #if defined(__CC_ARM) || (defined(__ARMCC_VERSION) && (__ARMCC_VERSION >= 6010050))
<> 149:156823d33999 282 __main();
<> 149:156823d33999 283
<> 149:156823d33999 284 #elif defined(__ICCARM__)
<> 149:156823d33999 285 __iar_program_start();
<> 149:156823d33999 286
<> 149:156823d33999 287 #elif defined(__GNUC__)
<> 149:156823d33999 288 uint32_t *src_ind = (uint32_t *) &__etext;
<> 149:156823d33999 289 uint32_t *dst_ind = (uint32_t *) &__data_start__;
<> 149:156823d33999 290 uint32_t *dst_end = (uint32_t *) &__data_end__;
<> 149:156823d33999 291
<> 149:156823d33999 292 /* Move .data section from ROM to RAM */
<> 149:156823d33999 293 if (src_ind != dst_ind) {
<> 149:156823d33999 294 for (; dst_ind < dst_end;) {
<> 149:156823d33999 295 *dst_ind ++ = *src_ind ++;
<> 149:156823d33999 296 }
<> 149:156823d33999 297 }
<> 149:156823d33999 298
<> 149:156823d33999 299 /* Initialize .bss section to zero */
<> 149:156823d33999 300 dst_ind = (uint32_t *) &__bss_start__;
<> 149:156823d33999 301 dst_end = (uint32_t *) &__bss_end__;
<> 149:156823d33999 302 if (dst_ind != dst_end) {
<> 149:156823d33999 303 for (; dst_ind < dst_end;) {
<> 149:156823d33999 304 *dst_ind ++ = 0;
<> 149:156823d33999 305 }
<> 149:156823d33999 306 }
<> 149:156823d33999 307
AnnaBridge 172:7d866c31b3c5 308 _start();
<> 149:156823d33999 309
<> 149:156823d33999 310 #endif
<> 149:156823d33999 311
<> 149:156823d33999 312 /* Infinite loop */
<> 149:156823d33999 313 while (1);
<> 149:156823d33999 314 }
<> 149:156823d33999 315
<> 149:156823d33999 316 /**
<> 149:156823d33999 317 * \brief Default interrupt handler for unused IRQs.
<> 149:156823d33999 318 */
<> 149:156823d33999 319 void Default_Handler(void)
<> 149:156823d33999 320 {
<> 149:156823d33999 321 while (1);
<> 149:156823d33999 322 }