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