Color Oled(SSD1331) connect to STMicroelectronics Nucleo-F466

Dependencies:   ssd1331

Committer:
kadonotakashi
Date:
Thu Oct 11 02:27:46 2018 +0000
Revision:
3:f3764f852aa8
Parent:
0:8fdf9a60065b
Nucreo 446 + SSD1331 test version;

Who changed what in which revision?

UserRevisionLine numberNew contents of line
kadonotakashi 0:8fdf9a60065b 1 /******************************************************************************
kadonotakashi 0:8fdf9a60065b 2 * @file startup_NUC472_442.c
kadonotakashi 0:8fdf9a60065b 3 * @version V0.10
kadonotakashi 0:8fdf9a60065b 4 * $Revision: 11 $
kadonotakashi 0:8fdf9a60065b 5 * $Date: 15/09/02 10:02a $
kadonotakashi 0:8fdf9a60065b 6 * @brief CMSIS Cortex-M4 Core Peripheral Access Layer Source File for NUC472/442 MCU
kadonotakashi 0:8fdf9a60065b 7 *
kadonotakashi 0:8fdf9a60065b 8 * @note
kadonotakashi 0:8fdf9a60065b 9 * Copyright (C) 2013~2015 Nuvoton Technology Corp. All rights reserved.
kadonotakashi 0:8fdf9a60065b 10 *****************************************************************************/
kadonotakashi 0:8fdf9a60065b 11
kadonotakashi 0:8fdf9a60065b 12 #include "NUC472_442.h"
kadonotakashi 0:8fdf9a60065b 13
kadonotakashi 0:8fdf9a60065b 14 /* Suppress warning messages */
kadonotakashi 0:8fdf9a60065b 15 #if defined(__CC_ARM)
kadonotakashi 0:8fdf9a60065b 16 // Suppress warning message: extended constant initialiser used
kadonotakashi 0:8fdf9a60065b 17 #pragma diag_suppress 1296
kadonotakashi 0:8fdf9a60065b 18 #elif defined(__ICCARM__)
kadonotakashi 0:8fdf9a60065b 19 #elif defined(__GNUC__)
kadonotakashi 0:8fdf9a60065b 20 #endif
kadonotakashi 0:8fdf9a60065b 21
kadonotakashi 0:8fdf9a60065b 22 /* Macro Definitions */
kadonotakashi 0:8fdf9a60065b 23 #if defined(__CC_ARM)
kadonotakashi 0:8fdf9a60065b 24 #define WEAK __attribute__ ((weak))
kadonotakashi 0:8fdf9a60065b 25 #define ALIAS(f) __attribute__ ((weak, alias(#f)))
kadonotakashi 0:8fdf9a60065b 26
kadonotakashi 0:8fdf9a60065b 27 #define WEAK_ALIAS_FUNC(FUN, FUN_ALIAS) \
kadonotakashi 0:8fdf9a60065b 28 void FUN(void) __attribute__ ((weak, alias(#FUN_ALIAS)));
kadonotakashi 0:8fdf9a60065b 29
kadonotakashi 0:8fdf9a60065b 30 #elif defined(__ICCARM__)
kadonotakashi 0:8fdf9a60065b 31 //#define STRINGIFY(x) #x
kadonotakashi 0:8fdf9a60065b 32 //#define _STRINGIFY(x) STRINGIFY(x)
kadonotakashi 0:8fdf9a60065b 33 #define WEAK_ALIAS_FUNC(FUN, FUN_ALIAS) \
kadonotakashi 0:8fdf9a60065b 34 void FUN(void); \
kadonotakashi 0:8fdf9a60065b 35 _Pragma(_STRINGIFY(_WEAK_ALIAS_FUNC(FUN, FUN_ALIAS)))
kadonotakashi 0:8fdf9a60065b 36 #define _WEAK_ALIAS_FUNC(FUN, FUN_ALIAS) weak __WEAK_ALIAS_FUNC(FUN, FUN_ALIAS)
kadonotakashi 0:8fdf9a60065b 37 #define __WEAK_ALIAS_FUNC(FUN, FUN_ALIAS) FUN##=##FUN_ALIAS
kadonotakashi 0:8fdf9a60065b 38
kadonotakashi 0:8fdf9a60065b 39 #elif defined(__GNUC__)
kadonotakashi 0:8fdf9a60065b 40 #define WEAK __attribute__ ((weak))
kadonotakashi 0:8fdf9a60065b 41 #define ALIAS(f) __attribute__ ((weak, alias(#f)))
kadonotakashi 0:8fdf9a60065b 42
kadonotakashi 0:8fdf9a60065b 43 #define WEAK_ALIAS_FUNC(FUN, FUN_ALIAS) \
kadonotakashi 0:8fdf9a60065b 44 void FUN(void) __attribute__ ((weak, alias(#FUN_ALIAS)));
kadonotakashi 0:8fdf9a60065b 45
kadonotakashi 0:8fdf9a60065b 46 #endif
kadonotakashi 0:8fdf9a60065b 47
kadonotakashi 0:8fdf9a60065b 48
kadonotakashi 0:8fdf9a60065b 49 /* Initialize segments */
kadonotakashi 0:8fdf9a60065b 50 #if defined(__CC_ARM) || (defined(__ARMCC_VERSION) && (__ARMCC_VERSION >= 6010050))
kadonotakashi 0:8fdf9a60065b 51 extern uint32_t Image$$ARM_LIB_STACK$$ZI$$Limit;
kadonotakashi 0:8fdf9a60065b 52 extern void __main(void);
kadonotakashi 0:8fdf9a60065b 53 #elif defined(__ICCARM__)
kadonotakashi 0:8fdf9a60065b 54 void __iar_program_start(void);
kadonotakashi 0:8fdf9a60065b 55 #elif defined(__GNUC__)
kadonotakashi 0:8fdf9a60065b 56 extern uint32_t __StackTop;
kadonotakashi 0:8fdf9a60065b 57 extern uint32_t __etext;
kadonotakashi 0:8fdf9a60065b 58 extern uint32_t __data_start__;
kadonotakashi 0:8fdf9a60065b 59 extern uint32_t __data_end__;
kadonotakashi 0:8fdf9a60065b 60 extern uint32_t __bss_start__;
kadonotakashi 0:8fdf9a60065b 61 extern uint32_t __bss_end__;
kadonotakashi 0:8fdf9a60065b 62 extern uint32_t __bss_extern_start__ WEAK;
kadonotakashi 0:8fdf9a60065b 63 extern uint32_t __bss_extern_end__ WEAK;
kadonotakashi 0:8fdf9a60065b 64
kadonotakashi 0:8fdf9a60065b 65 #if defined(TOOLCHAIN_GCC_ARM)
kadonotakashi 0:8fdf9a60065b 66 extern void _start(void);
kadonotakashi 0:8fdf9a60065b 67 #else
kadonotakashi 0:8fdf9a60065b 68 #error("For GCC toolchain, only support GNU ARM Embedded")
kadonotakashi 0:8fdf9a60065b 69 #endif
kadonotakashi 0:8fdf9a60065b 70 #endif
kadonotakashi 0:8fdf9a60065b 71
kadonotakashi 0:8fdf9a60065b 72 /* Default empty handler */
kadonotakashi 0:8fdf9a60065b 73 void Default_Handler(void);
kadonotakashi 0:8fdf9a60065b 74
kadonotakashi 0:8fdf9a60065b 75 /* Reset handler */
kadonotakashi 0:8fdf9a60065b 76 void Reset_Handler(void);
kadonotakashi 0:8fdf9a60065b 77
kadonotakashi 0:8fdf9a60065b 78 /* Cortex-M4 core handlers */
kadonotakashi 0:8fdf9a60065b 79 WEAK_ALIAS_FUNC(NMI_Handler, Default_Handler)
kadonotakashi 0:8fdf9a60065b 80 WEAK_ALIAS_FUNC(HardFault_Handler, Default_Handler)
kadonotakashi 0:8fdf9a60065b 81 WEAK_ALIAS_FUNC(MemManage_Handler, Default_Handler)
kadonotakashi 0:8fdf9a60065b 82 WEAK_ALIAS_FUNC(BusFault_Handler , Default_Handler)
kadonotakashi 0:8fdf9a60065b 83 WEAK_ALIAS_FUNC(UsageFault_Handler, Default_Handler)
kadonotakashi 0:8fdf9a60065b 84 WEAK_ALIAS_FUNC(SVC_Handler, Default_Handler)
kadonotakashi 0:8fdf9a60065b 85 WEAK_ALIAS_FUNC(DebugMon_Handler, Default_Handler)
kadonotakashi 0:8fdf9a60065b 86 WEAK_ALIAS_FUNC(PendSV_Handler, Default_Handler)
kadonotakashi 0:8fdf9a60065b 87 WEAK_ALIAS_FUNC(SysTick_Handler, Default_Handler)
kadonotakashi 0:8fdf9a60065b 88
kadonotakashi 0:8fdf9a60065b 89 /* Peripherals handlers */
kadonotakashi 0:8fdf9a60065b 90 WEAK_ALIAS_FUNC(BOD_IRQHandler, Default_Handler) // 0: Brown Out detection
kadonotakashi 0:8fdf9a60065b 91 WEAK_ALIAS_FUNC(IRC_IRQHandler, Default_Handler) // 1: Internal RC
kadonotakashi 0:8fdf9a60065b 92 WEAK_ALIAS_FUNC(PWRWU_IRQHandler, Default_Handler) // 2: Power Down Wake Up
kadonotakashi 0:8fdf9a60065b 93 WEAK_ALIAS_FUNC(SRAMF_IRQHandler, Default_Handler) // 3: Reserved.
kadonotakashi 0:8fdf9a60065b 94 WEAK_ALIAS_FUNC(CLKF_IRQHandler, Default_Handler) // 4: CLKF
kadonotakashi 0:8fdf9a60065b 95 // 5: Reserved.
kadonotakashi 0:8fdf9a60065b 96 WEAK_ALIAS_FUNC(RTC_IRQHandler, Default_Handler) // 6: Real Time Clock
kadonotakashi 0:8fdf9a60065b 97 WEAK_ALIAS_FUNC(TAMPER_IRQHandler, Default_Handler) // 7: Tamper detection
kadonotakashi 0:8fdf9a60065b 98 WEAK_ALIAS_FUNC(EINT0_IRQHandler, Default_Handler) // 8: External Input 0
kadonotakashi 0:8fdf9a60065b 99 WEAK_ALIAS_FUNC(EINT1_IRQHandler, Default_Handler) // 9: External Input 1
kadonotakashi 0:8fdf9a60065b 100 WEAK_ALIAS_FUNC(EINT2_IRQHandler, Default_Handler) // 10: External Input 2
kadonotakashi 0:8fdf9a60065b 101 WEAK_ALIAS_FUNC(EINT3_IRQHandler, Default_Handler) // 11: External Input 3
kadonotakashi 0:8fdf9a60065b 102 WEAK_ALIAS_FUNC(EINT4_IRQHandler, Default_Handler) // 12: External Input 4
kadonotakashi 0:8fdf9a60065b 103 WEAK_ALIAS_FUNC(EINT5_IRQHandler, Default_Handler) // 13: External Input 5
kadonotakashi 0:8fdf9a60065b 104 WEAK_ALIAS_FUNC(EINT6_IRQHandler, Default_Handler) // 14: External Input 6
kadonotakashi 0:8fdf9a60065b 105 WEAK_ALIAS_FUNC(EINT7_IRQHandler, Default_Handler) // 15: External Input 7
kadonotakashi 0:8fdf9a60065b 106 WEAK_ALIAS_FUNC(GPA_IRQHandler, Default_Handler) // 16: GPIO Port A
kadonotakashi 0:8fdf9a60065b 107 WEAK_ALIAS_FUNC(GPB_IRQHandler, Default_Handler) // 17: GPIO Port B
kadonotakashi 0:8fdf9a60065b 108 WEAK_ALIAS_FUNC(GPC_IRQHandler, Default_Handler) // 18: GPIO Port C
kadonotakashi 0:8fdf9a60065b 109 WEAK_ALIAS_FUNC(GPD_IRQHandler, Default_Handler) // 19: GPIO Port D
kadonotakashi 0:8fdf9a60065b 110 WEAK_ALIAS_FUNC(GPE_IRQHandler, Default_Handler) // 20: GPIO Port E
kadonotakashi 0:8fdf9a60065b 111 WEAK_ALIAS_FUNC(GPF_IRQHandler, Default_Handler) // 21: GPIO Port F
kadonotakashi 0:8fdf9a60065b 112 WEAK_ALIAS_FUNC(GPG_IRQHandler, Default_Handler) // 22: GPIO Port G
kadonotakashi 0:8fdf9a60065b 113 WEAK_ALIAS_FUNC(GPH_IRQHandler, Default_Handler) // 23: GPIO Port H
kadonotakashi 0:8fdf9a60065b 114 WEAK_ALIAS_FUNC(GPI_IRQHandler, Default_Handler) // 24: GPIO Port I
kadonotakashi 0:8fdf9a60065b 115 // 25: Reserved.
kadonotakashi 0:8fdf9a60065b 116 // 26: Reserved.
kadonotakashi 0:8fdf9a60065b 117 // 27: Reserved.
kadonotakashi 0:8fdf9a60065b 118 // 28: Reserved.
kadonotakashi 0:8fdf9a60065b 119 // 29: Reserved.
kadonotakashi 0:8fdf9a60065b 120 // 30: Reserved.
kadonotakashi 0:8fdf9a60065b 121 // 31: Reserved.
kadonotakashi 0:8fdf9a60065b 122 WEAK_ALIAS_FUNC(TMR0_IRQHandler, Default_Handler) // 32: Timer 0
kadonotakashi 0:8fdf9a60065b 123 WEAK_ALIAS_FUNC(TMR1_IRQHandler, Default_Handler) // 33: Timer 1
kadonotakashi 0:8fdf9a60065b 124 WEAK_ALIAS_FUNC(TMR2_IRQHandler, Default_Handler) // 34: Timer 2
kadonotakashi 0:8fdf9a60065b 125 WEAK_ALIAS_FUNC(TMR3_IRQHandler, Default_Handler) // 35: Timer 3
kadonotakashi 0:8fdf9a60065b 126 // 36: Reserved.
kadonotakashi 0:8fdf9a60065b 127 // 37: Reserved.
kadonotakashi 0:8fdf9a60065b 128 // 38: Reserved.
kadonotakashi 0:8fdf9a60065b 129 // 39: Reserved.
kadonotakashi 0:8fdf9a60065b 130 WEAK_ALIAS_FUNC(PDMA_IRQHandler, Default_Handler) // 40: Peripheral DMA
kadonotakashi 0:8fdf9a60065b 131 // 41: Reserved.
kadonotakashi 0:8fdf9a60065b 132 WEAK_ALIAS_FUNC(ADC_IRQHandler, Default_Handler) // 42: ADC
kadonotakashi 0:8fdf9a60065b 133 // 43: Reserved.
kadonotakashi 0:8fdf9a60065b 134 // 44: Reserved.
kadonotakashi 0:8fdf9a60065b 135 // 45: Reserved.
kadonotakashi 0:8fdf9a60065b 136 WEAK_ALIAS_FUNC(WDT_IRQHandler, Default_Handler) // 46: Watch Dog Timer
kadonotakashi 0:8fdf9a60065b 137 WEAK_ALIAS_FUNC(WWDT_IRQHandler, Default_Handler) // 47: Window Watch Dog Timer
kadonotakashi 0:8fdf9a60065b 138 WEAK_ALIAS_FUNC(EADC0_IRQHandler, Default_Handler) // 48: EDAC 0
kadonotakashi 0:8fdf9a60065b 139 WEAK_ALIAS_FUNC(EADC1_IRQHandler, Default_Handler) // 49: EDAC 1
kadonotakashi 0:8fdf9a60065b 140 WEAK_ALIAS_FUNC(EADC2_IRQHandler, Default_Handler) // 50: EDAC 2
kadonotakashi 0:8fdf9a60065b 141 WEAK_ALIAS_FUNC(EADC3_IRQHandler, Default_Handler) // 51: EDAC 3
kadonotakashi 0:8fdf9a60065b 142 // 52: Reserved.
kadonotakashi 0:8fdf9a60065b 143 // 53: Reserved.
kadonotakashi 0:8fdf9a60065b 144 // 54: Reserved.
kadonotakashi 0:8fdf9a60065b 145 // 55: Reserved.
kadonotakashi 0:8fdf9a60065b 146 WEAK_ALIAS_FUNC(ACMP_IRQHandler, Default_Handler) // 56: Analog Comparator
kadonotakashi 0:8fdf9a60065b 147 // 57: Reserved.
kadonotakashi 0:8fdf9a60065b 148 // 58: Reserved.
kadonotakashi 0:8fdf9a60065b 149 // 59: Reserved.
kadonotakashi 0:8fdf9a60065b 150 WEAK_ALIAS_FUNC(OPA0_IRQHandler, Default_Handler) // 60: OPA 0
kadonotakashi 0:8fdf9a60065b 151 WEAK_ALIAS_FUNC(OPA1_IRQHandler, Default_Handler) // 61: OPA 1
kadonotakashi 0:8fdf9a60065b 152 WEAK_ALIAS_FUNC(ICAP0_IRQHandler, Default_Handler) // 62: ICAP 0
kadonotakashi 0:8fdf9a60065b 153 WEAK_ALIAS_FUNC(ICAP1_IRQHandler, Default_Handler) // 63: ICAP 1
kadonotakashi 0:8fdf9a60065b 154 WEAK_ALIAS_FUNC(PWM0CH0_IRQHandler, Default_Handler) // 64: PWM0 CH0
kadonotakashi 0:8fdf9a60065b 155 WEAK_ALIAS_FUNC(PWM0CH1_IRQHandler, Default_Handler) // 65: PWM0 CH1
kadonotakashi 0:8fdf9a60065b 156 WEAK_ALIAS_FUNC(PWM0CH2_IRQHandler, Default_Handler) // 66: PWM0 CH2
kadonotakashi 0:8fdf9a60065b 157 WEAK_ALIAS_FUNC(PWM0CH3_IRQHandler, Default_Handler) // 67: PWM0 CH3
kadonotakashi 0:8fdf9a60065b 158 WEAK_ALIAS_FUNC(PWM0CH4_IRQHandler, Default_Handler) // 68: PWM0 CH4
kadonotakashi 0:8fdf9a60065b 159 WEAK_ALIAS_FUNC(PWM0CH5_IRQHandler, Default_Handler) // 69: PWM0 CH5
kadonotakashi 0:8fdf9a60065b 160 WEAK_ALIAS_FUNC(PWM0_BRK_IRQHandler, Default_Handler) // 70: PWM0 Break
kadonotakashi 0:8fdf9a60065b 161 WEAK_ALIAS_FUNC(QEI0_IRQHandler, Default_Handler) // 71: QEI 0
kadonotakashi 0:8fdf9a60065b 162 WEAK_ALIAS_FUNC(PWM1CH0_IRQHandler, Default_Handler) // 72: PWM1 CH0
kadonotakashi 0:8fdf9a60065b 163 WEAK_ALIAS_FUNC(PWM1CH1_IRQHandler, Default_Handler) // 73: PWM1 CH1
kadonotakashi 0:8fdf9a60065b 164 WEAK_ALIAS_FUNC(PWM1CH2_IRQHandler, Default_Handler) // 74: PWM1 CH2
kadonotakashi 0:8fdf9a60065b 165 WEAK_ALIAS_FUNC(PWM1CH3_IRQHandler, Default_Handler) // 75: PWM1 CH3
kadonotakashi 0:8fdf9a60065b 166 WEAK_ALIAS_FUNC(PWM1CH4_IRQHandler, Default_Handler) // 76: PWM1 CH4
kadonotakashi 0:8fdf9a60065b 167 WEAK_ALIAS_FUNC(PWM1CH5_IRQHandler, Default_Handler) // 77: PWM1 CH5
kadonotakashi 0:8fdf9a60065b 168 WEAK_ALIAS_FUNC(PWM1_BRK_IRQHandler, Default_Handler) // 78: PWM1 Break
kadonotakashi 0:8fdf9a60065b 169 WEAK_ALIAS_FUNC(QEI1_IRQHandler, Default_Handler) // 79: QEI 1
kadonotakashi 0:8fdf9a60065b 170 WEAK_ALIAS_FUNC(EPWM0_IRQHandler, Default_Handler) // 80: EPWM0
kadonotakashi 0:8fdf9a60065b 171 WEAK_ALIAS_FUNC(EPWM0BRK_IRQHandler, Default_Handler) // 81: EPWM0 Break
kadonotakashi 0:8fdf9a60065b 172 WEAK_ALIAS_FUNC(EPWM1_IRQHandler, Default_Handler) // 82: EPWM1
kadonotakashi 0:8fdf9a60065b 173 WEAK_ALIAS_FUNC(EPWM1BRK_IRQHandler, Default_Handler) // 83: EPWM1 Break
kadonotakashi 0:8fdf9a60065b 174 // 84: Reserved.
kadonotakashi 0:8fdf9a60065b 175 // 85: Reserved.
kadonotakashi 0:8fdf9a60065b 176 // 86: Reserved.
kadonotakashi 0:8fdf9a60065b 177 // 87: Reserved.
kadonotakashi 0:8fdf9a60065b 178 WEAK_ALIAS_FUNC(USBD_IRQHandler, Default_Handler) // 88: USB Device
kadonotakashi 0:8fdf9a60065b 179 WEAK_ALIAS_FUNC(USBH_IRQHandler, Default_Handler) // 89: USB Host
kadonotakashi 0:8fdf9a60065b 180 WEAK_ALIAS_FUNC(USB_OTG_IRQHandler, Default_Handler) // 90: USB OTG
kadonotakashi 0:8fdf9a60065b 181 // 91: Reserved.
kadonotakashi 0:8fdf9a60065b 182 WEAK_ALIAS_FUNC(EMAC_TX_IRQHandler, Default_Handler) // 92: Ethernet MAC TX
kadonotakashi 0:8fdf9a60065b 183 WEAK_ALIAS_FUNC(EMAC_RX_IRQHandler, Default_Handler) // 93: Ethernet MAC RX
kadonotakashi 0:8fdf9a60065b 184 // 94: Reserved.
kadonotakashi 0:8fdf9a60065b 185 // 95: Reserved.
kadonotakashi 0:8fdf9a60065b 186 WEAK_ALIAS_FUNC(SPI0_IRQHandler, Default_Handler) // 96: SPI 0
kadonotakashi 0:8fdf9a60065b 187 WEAK_ALIAS_FUNC(SPI1_IRQHandler, Default_Handler) // 97: SPI 1
kadonotakashi 0:8fdf9a60065b 188 WEAK_ALIAS_FUNC(SPI2_IRQHandler, Default_Handler) // 98: SPI 2
kadonotakashi 0:8fdf9a60065b 189 WEAK_ALIAS_FUNC(SPI3_IRQHandler, Default_Handler) // 99: SPI 3
kadonotakashi 0:8fdf9a60065b 190 // 100: Reserved.
kadonotakashi 0:8fdf9a60065b 191 // 101: Reserved.
kadonotakashi 0:8fdf9a60065b 192 // 102: Reserved.
kadonotakashi 0:8fdf9a60065b 193 // 103: Reserved.
kadonotakashi 0:8fdf9a60065b 194 WEAK_ALIAS_FUNC(UART0_IRQHandler, Default_Handler) // 104: UART 0
kadonotakashi 0:8fdf9a60065b 195 WEAK_ALIAS_FUNC(UART1_IRQHandler, Default_Handler) // 105: UART 1
kadonotakashi 0:8fdf9a60065b 196 WEAK_ALIAS_FUNC(UART2_IRQHandler, Default_Handler) // 106: UART 2
kadonotakashi 0:8fdf9a60065b 197 WEAK_ALIAS_FUNC(UART3_IRQHandler, Default_Handler) // 107: UART 3
kadonotakashi 0:8fdf9a60065b 198 WEAK_ALIAS_FUNC(UART4_IRQHandler, Default_Handler) // 108: UART 4
kadonotakashi 0:8fdf9a60065b 199 WEAK_ALIAS_FUNC(UART5_IRQHandler, Default_Handler) // 109: UART 5
kadonotakashi 0:8fdf9a60065b 200 // 110: Reserved.
kadonotakashi 0:8fdf9a60065b 201 // 111: Reserved.
kadonotakashi 0:8fdf9a60065b 202 WEAK_ALIAS_FUNC(I2C0_IRQHandler, Default_Handler) // 112: I2C 0
kadonotakashi 0:8fdf9a60065b 203 WEAK_ALIAS_FUNC(I2C1_IRQHandler, Default_Handler) // 113: I2C 1
kadonotakashi 0:8fdf9a60065b 204 WEAK_ALIAS_FUNC(I2C2_IRQHandler, Default_Handler) // 114: I2C 2
kadonotakashi 0:8fdf9a60065b 205 WEAK_ALIAS_FUNC(I2C3_IRQHandler, Default_Handler) // 115: I2C 3
kadonotakashi 0:8fdf9a60065b 206 WEAK_ALIAS_FUNC(I2C4_IRQHandler, Default_Handler) // 116: I2C 4
kadonotakashi 0:8fdf9a60065b 207 // 117: Reserved.
kadonotakashi 0:8fdf9a60065b 208 // 118: Reserved.
kadonotakashi 0:8fdf9a60065b 209 // 119: Reserved.
kadonotakashi 0:8fdf9a60065b 210 WEAK_ALIAS_FUNC(SC0_IRQHandler, Default_Handler) // 120: Smart Card 0
kadonotakashi 0:8fdf9a60065b 211 WEAK_ALIAS_FUNC(SC1_IRQHandler, Default_Handler) // 121: Smart Card 1
kadonotakashi 0:8fdf9a60065b 212 WEAK_ALIAS_FUNC(SC2_IRQHandler, Default_Handler) // 122: Smart Card 2
kadonotakashi 0:8fdf9a60065b 213 WEAK_ALIAS_FUNC(SC3_IRQHandler, Default_Handler) // 123: Smart Card 3
kadonotakashi 0:8fdf9a60065b 214 WEAK_ALIAS_FUNC(SC4_IRQHandler, Default_Handler) // 124: Smart Card 4
kadonotakashi 0:8fdf9a60065b 215 WEAK_ALIAS_FUNC(SC5_IRQHandler, Default_Handler) // 125: Smart Card 5
kadonotakashi 0:8fdf9a60065b 216 // 126: Reserved.
kadonotakashi 0:8fdf9a60065b 217 // 127: Reserved.
kadonotakashi 0:8fdf9a60065b 218 WEAK_ALIAS_FUNC(CAN0_IRQHandler, Default_Handler) // 128: CAN 0
kadonotakashi 0:8fdf9a60065b 219 WEAK_ALIAS_FUNC(CAN1_IRQHandler, Default_Handler) // 129: CAN 1
kadonotakashi 0:8fdf9a60065b 220 // 130: Reserved.
kadonotakashi 0:8fdf9a60065b 221 // 131: Reserved.
kadonotakashi 0:8fdf9a60065b 222 WEAK_ALIAS_FUNC(I2S0_IRQHandler, Default_Handler) // 132: I2S 0
kadonotakashi 0:8fdf9a60065b 223 WEAK_ALIAS_FUNC(I2S1_IRQHandler, Default_Handler) // 133: I2S 1
kadonotakashi 0:8fdf9a60065b 224 // 134: Reserved.
kadonotakashi 0:8fdf9a60065b 225 // 135: Reserved.
kadonotakashi 0:8fdf9a60065b 226 WEAK_ALIAS_FUNC(SD_IRQHandler, Default_Handler) // 136: SD card
kadonotakashi 0:8fdf9a60065b 227 // 137: Reserved.
kadonotakashi 0:8fdf9a60065b 228 WEAK_ALIAS_FUNC(PS2D_IRQHandler, Default_Handler) // 138: PS/2 device
kadonotakashi 0:8fdf9a60065b 229 WEAK_ALIAS_FUNC(CAP_IRQHandler, Default_Handler) // 139: VIN
kadonotakashi 0:8fdf9a60065b 230 WEAK_ALIAS_FUNC(CRYPTO_IRQHandler, Default_Handler) // 140: CRYPTO
kadonotakashi 0:8fdf9a60065b 231 WEAK_ALIAS_FUNC(CRC_IRQHandler, Default_Handler) // 141: CRC
kadonotakashi 0:8fdf9a60065b 232
kadonotakashi 0:8fdf9a60065b 233 /* Vector table */
kadonotakashi 0:8fdf9a60065b 234 #if defined(__CC_ARM) || (defined(__ARMCC_VERSION) && (__ARMCC_VERSION >= 6010050))
kadonotakashi 0:8fdf9a60065b 235 __attribute__ ((section("RESET")))
kadonotakashi 0:8fdf9a60065b 236 const uint32_t __vector_handlers[] = {
kadonotakashi 0:8fdf9a60065b 237 #elif defined(__ICCARM__)
kadonotakashi 0:8fdf9a60065b 238 extern uint32_t CSTACK$$Limit;
kadonotakashi 0:8fdf9a60065b 239 const uint32_t __vector_table[] @ ".intvec" = {
kadonotakashi 0:8fdf9a60065b 240 #elif defined(__GNUC__)
kadonotakashi 0:8fdf9a60065b 241 __attribute__ ((section(".vector_table")))
kadonotakashi 0:8fdf9a60065b 242 const uint32_t __vector_handlers[] = {
kadonotakashi 0:8fdf9a60065b 243 #endif
kadonotakashi 0:8fdf9a60065b 244
kadonotakashi 0:8fdf9a60065b 245 /* Configure Initial Stack Pointer, using linker-generated symbols */
kadonotakashi 0:8fdf9a60065b 246 #if defined(__CC_ARM) || (defined(__ARMCC_VERSION) && (__ARMCC_VERSION >= 6010050))
kadonotakashi 0:8fdf9a60065b 247 (uint32_t) &Image$$ARM_LIB_STACK$$ZI$$Limit,
kadonotakashi 0:8fdf9a60065b 248 #elif defined(__ICCARM__)
kadonotakashi 0:8fdf9a60065b 249 //(uint32_t) __sfe("CSTACK"),
kadonotakashi 0:8fdf9a60065b 250 (uint32_t) &CSTACK$$Limit,
kadonotakashi 0:8fdf9a60065b 251 #elif defined(__GNUC__)
kadonotakashi 0:8fdf9a60065b 252 (uint32_t) &__StackTop,
kadonotakashi 0:8fdf9a60065b 253 #endif
kadonotakashi 0:8fdf9a60065b 254
kadonotakashi 0:8fdf9a60065b 255 (uint32_t) Reset_Handler, // Reset Handler
kadonotakashi 0:8fdf9a60065b 256 (uint32_t) NMI_Handler, // NMI Handler
kadonotakashi 0:8fdf9a60065b 257 (uint32_t) HardFault_Handler, // Hard Fault Handler
kadonotakashi 0:8fdf9a60065b 258 (uint32_t) MemManage_Handler, // MPU Fault Handler
kadonotakashi 0:8fdf9a60065b 259 (uint32_t) BusFault_Handler, // Bus Fault Handler
kadonotakashi 0:8fdf9a60065b 260 (uint32_t) UsageFault_Handler, // Usage Fault Handler
kadonotakashi 0:8fdf9a60065b 261 0, // Reserved
kadonotakashi 0:8fdf9a60065b 262 0, // Reserved
kadonotakashi 0:8fdf9a60065b 263 0, // Reserved
kadonotakashi 0:8fdf9a60065b 264 0, // Reserved
kadonotakashi 0:8fdf9a60065b 265 (uint32_t) SVC_Handler, // SVCall Handler
kadonotakashi 0:8fdf9a60065b 266 (uint32_t) DebugMon_Handler, // Debug Monitor Handler
kadonotakashi 0:8fdf9a60065b 267 0, // Reserved
kadonotakashi 0:8fdf9a60065b 268 (uint32_t) PendSV_Handler, // PendSV Handler
kadonotakashi 0:8fdf9a60065b 269 (uint32_t) SysTick_Handler, // SysTick Handler
kadonotakashi 0:8fdf9a60065b 270
kadonotakashi 0:8fdf9a60065b 271 /* External Interrupts */
kadonotakashi 0:8fdf9a60065b 272 (uint32_t) BOD_IRQHandler, // 0: Brown Out detection
kadonotakashi 0:8fdf9a60065b 273 (uint32_t) IRC_IRQHandler, // 1: Internal RC
kadonotakashi 0:8fdf9a60065b 274 (uint32_t) PWRWU_IRQHandler, // 2: Power Down Wake Up
kadonotakashi 0:8fdf9a60065b 275 (uint32_t) SRAMF_IRQHandler, // 3: Reserved.
kadonotakashi 0:8fdf9a60065b 276 (uint32_t) CLKF_IRQHandler, // 4: CLKF
kadonotakashi 0:8fdf9a60065b 277 (uint32_t) Default_Handler, // 5: Reserved.
kadonotakashi 0:8fdf9a60065b 278 (uint32_t) RTC_IRQHandler, // 6: Real Time Clock
kadonotakashi 0:8fdf9a60065b 279 (uint32_t) TAMPER_IRQHandler, // 7: Tamper detection
kadonotakashi 0:8fdf9a60065b 280 (uint32_t) EINT0_IRQHandler, // 8: External Input 0
kadonotakashi 0:8fdf9a60065b 281 (uint32_t) EINT1_IRQHandler, // 9: External Input 1
kadonotakashi 0:8fdf9a60065b 282 (uint32_t) EINT2_IRQHandler, // 10: External Input 2
kadonotakashi 0:8fdf9a60065b 283 (uint32_t) EINT3_IRQHandler, // 11: External Input 3
kadonotakashi 0:8fdf9a60065b 284 (uint32_t) EINT4_IRQHandler, // 12: External Input 4
kadonotakashi 0:8fdf9a60065b 285 (uint32_t) EINT5_IRQHandler, // 13: External Input 5
kadonotakashi 0:8fdf9a60065b 286 (uint32_t) EINT6_IRQHandler, // 14: External Input 6
kadonotakashi 0:8fdf9a60065b 287 (uint32_t) EINT7_IRQHandler, // 15: External Input 7
kadonotakashi 0:8fdf9a60065b 288 (uint32_t) GPA_IRQHandler, // 16: GPIO Port A
kadonotakashi 0:8fdf9a60065b 289 (uint32_t) GPB_IRQHandler, // 17: GPIO Port B
kadonotakashi 0:8fdf9a60065b 290 (uint32_t) GPC_IRQHandler, // 18: GPIO Port C
kadonotakashi 0:8fdf9a60065b 291 (uint32_t) GPD_IRQHandler, // 19: GPIO Port D
kadonotakashi 0:8fdf9a60065b 292 (uint32_t) GPE_IRQHandler, // 20: GPIO Port E
kadonotakashi 0:8fdf9a60065b 293 (uint32_t) GPF_IRQHandler, // 21: GPIO Port F
kadonotakashi 0:8fdf9a60065b 294 (uint32_t) GPG_IRQHandler, // 22: GPIO Port G
kadonotakashi 0:8fdf9a60065b 295 (uint32_t) GPH_IRQHandler, // 23: GPIO Port H
kadonotakashi 0:8fdf9a60065b 296 (uint32_t) GPI_IRQHandler, // 24: GPIO Port I
kadonotakashi 0:8fdf9a60065b 297 (uint32_t) Default_Handler, // 25: Reserved.
kadonotakashi 0:8fdf9a60065b 298 (uint32_t) Default_Handler, // 26: Reserved.
kadonotakashi 0:8fdf9a60065b 299 (uint32_t) Default_Handler, // 27: Reserved.
kadonotakashi 0:8fdf9a60065b 300 (uint32_t) Default_Handler, // 28: Reserved.
kadonotakashi 0:8fdf9a60065b 301 (uint32_t) Default_Handler, // 29: Reserved.
kadonotakashi 0:8fdf9a60065b 302 (uint32_t) Default_Handler, // 30: Reserved.
kadonotakashi 0:8fdf9a60065b 303 (uint32_t) Default_Handler, // 31: Reserved.
kadonotakashi 0:8fdf9a60065b 304 (uint32_t) TMR0_IRQHandler, // 32: Timer 0
kadonotakashi 0:8fdf9a60065b 305 (uint32_t) TMR1_IRQHandler, // 33: Timer 1
kadonotakashi 0:8fdf9a60065b 306 (uint32_t) TMR2_IRQHandler, // 34: Timer 2
kadonotakashi 0:8fdf9a60065b 307 (uint32_t) TMR3_IRQHandler, // 35: Timer 3
kadonotakashi 0:8fdf9a60065b 308 (uint32_t) Default_Handler, // 36: Reserved.
kadonotakashi 0:8fdf9a60065b 309 (uint32_t) Default_Handler, // 37: Reserved.
kadonotakashi 0:8fdf9a60065b 310 (uint32_t) Default_Handler, // 38: Reserved.
kadonotakashi 0:8fdf9a60065b 311 (uint32_t) Default_Handler, // 39: Reserved.
kadonotakashi 0:8fdf9a60065b 312 (uint32_t) PDMA_IRQHandler, // 40: Peripheral DMA
kadonotakashi 0:8fdf9a60065b 313 (uint32_t) Default_Handler, // 41: Reserved.
kadonotakashi 0:8fdf9a60065b 314 (uint32_t) ADC_IRQHandler, // 42: ADC
kadonotakashi 0:8fdf9a60065b 315 (uint32_t) Default_Handler, // 43: Reserved.
kadonotakashi 0:8fdf9a60065b 316 (uint32_t) Default_Handler, // 44: Reserved.
kadonotakashi 0:8fdf9a60065b 317 (uint32_t) Default_Handler, // 45: Reserved.
kadonotakashi 0:8fdf9a60065b 318 (uint32_t) WDT_IRQHandler, // 46: Watch Dog Timer
kadonotakashi 0:8fdf9a60065b 319 (uint32_t) WWDT_IRQHandler, // 47: Window Watch Dog Timer
kadonotakashi 0:8fdf9a60065b 320 (uint32_t) EADC0_IRQHandler, // 48: EDAC 0
kadonotakashi 0:8fdf9a60065b 321 (uint32_t) EADC1_IRQHandler, // 49: EDAC 1
kadonotakashi 0:8fdf9a60065b 322 (uint32_t) EADC2_IRQHandler, // 50: EDAC 2
kadonotakashi 0:8fdf9a60065b 323 (uint32_t) EADC3_IRQHandler, // 51: EDAC 3
kadonotakashi 0:8fdf9a60065b 324 (uint32_t) Default_Handler, // 52: Reserved.
kadonotakashi 0:8fdf9a60065b 325 (uint32_t) Default_Handler, // 53: Reserved.
kadonotakashi 0:8fdf9a60065b 326 (uint32_t) Default_Handler, // 54: Reserved.
kadonotakashi 0:8fdf9a60065b 327 (uint32_t) Default_Handler, // 55: Reserved.
kadonotakashi 0:8fdf9a60065b 328 (uint32_t) ACMP_IRQHandler, // 56: Analog Comparator
kadonotakashi 0:8fdf9a60065b 329 (uint32_t) Default_Handler, // 57: Reserved.
kadonotakashi 0:8fdf9a60065b 330 (uint32_t) Default_Handler, // 58: Reserved.
kadonotakashi 0:8fdf9a60065b 331 (uint32_t) Default_Handler, // 59: Reserved.
kadonotakashi 0:8fdf9a60065b 332 (uint32_t) OPA0_IRQHandler, // 60: OPA 0
kadonotakashi 0:8fdf9a60065b 333 (uint32_t) OPA1_IRQHandler, // 61: OPA 1
kadonotakashi 0:8fdf9a60065b 334 (uint32_t) ICAP0_IRQHandler, // 62: ICAP 0
kadonotakashi 0:8fdf9a60065b 335 (uint32_t) ICAP1_IRQHandler, // 63: ICAP 1
kadonotakashi 0:8fdf9a60065b 336 (uint32_t) PWM0CH0_IRQHandler, // 64: PWM0 CH0
kadonotakashi 0:8fdf9a60065b 337 (uint32_t) PWM0CH1_IRQHandler, // 65: PWM0 CH1
kadonotakashi 0:8fdf9a60065b 338 (uint32_t) PWM0CH2_IRQHandler, // 66: PWM0 CH2
kadonotakashi 0:8fdf9a60065b 339 (uint32_t) PWM0CH3_IRQHandler, // 67: PWM0 CH3
kadonotakashi 0:8fdf9a60065b 340 (uint32_t) PWM0CH4_IRQHandler, // 68: PWM0 CH4
kadonotakashi 0:8fdf9a60065b 341 (uint32_t) PWM0CH5_IRQHandler, // 69: PWM0 CH5
kadonotakashi 0:8fdf9a60065b 342 (uint32_t) PWM0_BRK_IRQHandler, // 70: PWM0 Break
kadonotakashi 0:8fdf9a60065b 343 (uint32_t) QEI0_IRQHandler, // 71: QEI 0
kadonotakashi 0:8fdf9a60065b 344 (uint32_t) PWM1CH0_IRQHandler, // 72: PWM1 CH0
kadonotakashi 0:8fdf9a60065b 345 (uint32_t) PWM1CH1_IRQHandler, // 73: PWM1 CH1
kadonotakashi 0:8fdf9a60065b 346 (uint32_t) PWM1CH2_IRQHandler, // 74: PWM1 CH2
kadonotakashi 0:8fdf9a60065b 347 (uint32_t) PWM1CH3_IRQHandler, // 75: PWM1 CH3
kadonotakashi 0:8fdf9a60065b 348 (uint32_t) PWM1CH4_IRQHandler, // 76: PWM1 CH4
kadonotakashi 0:8fdf9a60065b 349 (uint32_t) PWM1CH5_IRQHandler, // 77: PWM1 CH5
kadonotakashi 0:8fdf9a60065b 350 (uint32_t) PWM1_BRK_IRQHandler, // 78: PWM1 Break
kadonotakashi 0:8fdf9a60065b 351 (uint32_t) QEI1_IRQHandler, // 79: QEI 1
kadonotakashi 0:8fdf9a60065b 352 (uint32_t) EPWM0_IRQHandler, // 80: EPWM0
kadonotakashi 0:8fdf9a60065b 353 (uint32_t) EPWM0BRK_IRQHandler, // 81: EPWM0 Break
kadonotakashi 0:8fdf9a60065b 354 (uint32_t) EPWM1_IRQHandler, // 82: EPWM1
kadonotakashi 0:8fdf9a60065b 355 (uint32_t) EPWM1BRK_IRQHandler, // 83: EPWM1 Break
kadonotakashi 0:8fdf9a60065b 356 (uint32_t) Default_Handler, // 84: Reserved.
kadonotakashi 0:8fdf9a60065b 357 (uint32_t) Default_Handler, // 85: Reserved.
kadonotakashi 0:8fdf9a60065b 358 (uint32_t) Default_Handler, // 86: Reserved.
kadonotakashi 0:8fdf9a60065b 359 (uint32_t) Default_Handler, // 87: Reserved.
kadonotakashi 0:8fdf9a60065b 360 (uint32_t) USBD_IRQHandler, // 88: USB Device
kadonotakashi 0:8fdf9a60065b 361 (uint32_t) USBH_IRQHandler, // 89: USB Host
kadonotakashi 0:8fdf9a60065b 362 (uint32_t) USB_OTG_IRQHandler, // 90: USB OTG
kadonotakashi 0:8fdf9a60065b 363 (uint32_t) Default_Handler, // 91: Reserved.
kadonotakashi 0:8fdf9a60065b 364 (uint32_t) EMAC_TX_IRQHandler, // 92: Ethernet MAC TX
kadonotakashi 0:8fdf9a60065b 365 (uint32_t) EMAC_RX_IRQHandler, // 93: Ethernet MAC RX
kadonotakashi 0:8fdf9a60065b 366 (uint32_t) Default_Handler, // 94: Reserved.
kadonotakashi 0:8fdf9a60065b 367 (uint32_t) Default_Handler, // 95: Reserved.
kadonotakashi 0:8fdf9a60065b 368 (uint32_t) SPI0_IRQHandler, // 96: SPI 0
kadonotakashi 0:8fdf9a60065b 369 (uint32_t) SPI1_IRQHandler, // 97: SPI 1
kadonotakashi 0:8fdf9a60065b 370 (uint32_t) SPI2_IRQHandler, // 98: SPI 2
kadonotakashi 0:8fdf9a60065b 371 (uint32_t) SPI3_IRQHandler, // 99: SPI 3
kadonotakashi 0:8fdf9a60065b 372 (uint32_t) Default_Handler, // 100: Reserved.
kadonotakashi 0:8fdf9a60065b 373 (uint32_t) Default_Handler, // 101: Reserved.
kadonotakashi 0:8fdf9a60065b 374 (uint32_t) Default_Handler, // 102: Reserved.
kadonotakashi 0:8fdf9a60065b 375 (uint32_t) Default_Handler, // 103: Reserved.
kadonotakashi 0:8fdf9a60065b 376 (uint32_t) UART0_IRQHandler, // 104: UART 0
kadonotakashi 0:8fdf9a60065b 377 (uint32_t) UART1_IRQHandler, // 105: UART 1
kadonotakashi 0:8fdf9a60065b 378 (uint32_t) UART2_IRQHandler, // 106: UART 2
kadonotakashi 0:8fdf9a60065b 379 (uint32_t) UART3_IRQHandler, // 107: UART 3
kadonotakashi 0:8fdf9a60065b 380 (uint32_t) UART4_IRQHandler, // 108: UART 4
kadonotakashi 0:8fdf9a60065b 381 (uint32_t) UART5_IRQHandler, // 109: UART 5
kadonotakashi 0:8fdf9a60065b 382 (uint32_t) Default_Handler, // 110: Reserved.
kadonotakashi 0:8fdf9a60065b 383 (uint32_t) Default_Handler, // 111: Reserved.
kadonotakashi 0:8fdf9a60065b 384 (uint32_t) I2C0_IRQHandler, // 112: I2C 0
kadonotakashi 0:8fdf9a60065b 385 (uint32_t) I2C1_IRQHandler, // 113: I2C 1
kadonotakashi 0:8fdf9a60065b 386 (uint32_t) I2C2_IRQHandler, // 114: I2C 2
kadonotakashi 0:8fdf9a60065b 387 (uint32_t) I2C3_IRQHandler, // 115: I2C 3
kadonotakashi 0:8fdf9a60065b 388 (uint32_t) I2C4_IRQHandler, // 116: I2C 4
kadonotakashi 0:8fdf9a60065b 389 (uint32_t) Default_Handler, // 117: Reserved.
kadonotakashi 0:8fdf9a60065b 390 (uint32_t) Default_Handler, // 118: Reserved.
kadonotakashi 0:8fdf9a60065b 391 (uint32_t) Default_Handler, // 119: Reserved.
kadonotakashi 0:8fdf9a60065b 392 (uint32_t) SC0_IRQHandler, // 120: Smart Card 0
kadonotakashi 0:8fdf9a60065b 393 (uint32_t) SC1_IRQHandler, // 121: Smart Card 1
kadonotakashi 0:8fdf9a60065b 394 (uint32_t) SC2_IRQHandler, // 122: Smart Card 2
kadonotakashi 0:8fdf9a60065b 395 (uint32_t) SC3_IRQHandler, // 123: Smart Card 3
kadonotakashi 0:8fdf9a60065b 396 (uint32_t) SC4_IRQHandler, // 124: Smart Card 4
kadonotakashi 0:8fdf9a60065b 397 (uint32_t) SC5_IRQHandler, // 125: Smart Card 5
kadonotakashi 0:8fdf9a60065b 398 (uint32_t) Default_Handler, // 126: Reserved.
kadonotakashi 0:8fdf9a60065b 399 (uint32_t) Default_Handler, // 127: Reserved.
kadonotakashi 0:8fdf9a60065b 400 (uint32_t) CAN0_IRQHandler, // 128: CAN 0
kadonotakashi 0:8fdf9a60065b 401 (uint32_t) CAN1_IRQHandler, // 129: CAN 1
kadonotakashi 0:8fdf9a60065b 402 (uint32_t) Default_Handler, // 130: Reserved.
kadonotakashi 0:8fdf9a60065b 403 (uint32_t) Default_Handler, // 131: Reserved.
kadonotakashi 0:8fdf9a60065b 404 (uint32_t) I2S0_IRQHandler, // 132: I2S 0
kadonotakashi 0:8fdf9a60065b 405 (uint32_t) I2S1_IRQHandler, // 133: I2S 1
kadonotakashi 0:8fdf9a60065b 406 (uint32_t) Default_Handler, // 134: Reserved.
kadonotakashi 0:8fdf9a60065b 407 (uint32_t) Default_Handler, // 135: Reserved.
kadonotakashi 0:8fdf9a60065b 408 (uint32_t) SD_IRQHandler, // 136: SD card
kadonotakashi 0:8fdf9a60065b 409 (uint32_t) Default_Handler, // 137: Reserved.
kadonotakashi 0:8fdf9a60065b 410 (uint32_t) PS2D_IRQHandler, // 138: PS/2 device
kadonotakashi 0:8fdf9a60065b 411 (uint32_t) CAP_IRQHandler, // 139: VIN
kadonotakashi 0:8fdf9a60065b 412 (uint32_t) CRYPTO_IRQHandler, // 140: CRYPTO
kadonotakashi 0:8fdf9a60065b 413 (uint32_t) CRC_IRQHandler, // 141: CRC
kadonotakashi 0:8fdf9a60065b 414 };
kadonotakashi 0:8fdf9a60065b 415
kadonotakashi 0:8fdf9a60065b 416 /**
kadonotakashi 0:8fdf9a60065b 417 * \brief This is the code that gets called on processor reset.
kadonotakashi 0:8fdf9a60065b 418 */
kadonotakashi 0:8fdf9a60065b 419 void Reset_Handler(void)
kadonotakashi 0:8fdf9a60065b 420 {
kadonotakashi 0:8fdf9a60065b 421 /* Disable register write-protection function */
kadonotakashi 0:8fdf9a60065b 422 SYS_UnlockReg();
kadonotakashi 0:8fdf9a60065b 423
kadonotakashi 0:8fdf9a60065b 424 /* Disable branch buffer if VCID is 0 */
kadonotakashi 0:8fdf9a60065b 425 if (SYS->VCID == 0) {
kadonotakashi 0:8fdf9a60065b 426 FMC->FTCTL |= 0x80;
kadonotakashi 0:8fdf9a60065b 427 }
kadonotakashi 0:8fdf9a60065b 428
kadonotakashi 0:8fdf9a60065b 429 /* Disable Power-on Reset function */
kadonotakashi 0:8fdf9a60065b 430 SYS_DISABLE_POR();
kadonotakashi 0:8fdf9a60065b 431
kadonotakashi 0:8fdf9a60065b 432 /**
kadonotakashi 0:8fdf9a60065b 433 * NOTE 1: Unlock is required for perhaps some register access in SystemInit().
kadonotakashi 0:8fdf9a60065b 434 * NOTE 2: Because EBI (external SRAM) init is done in SystemInit(), SystemInit() must be called at the very start.
kadonotakashi 0:8fdf9a60065b 435 */
kadonotakashi 0:8fdf9a60065b 436 SystemInit();
kadonotakashi 0:8fdf9a60065b 437
kadonotakashi 0:8fdf9a60065b 438 /* Enable register write-protection function */
kadonotakashi 0:8fdf9a60065b 439 SYS_LockReg();
kadonotakashi 0:8fdf9a60065b 440
kadonotakashi 0:8fdf9a60065b 441 #if defined(__CC_ARM) || (defined(__ARMCC_VERSION) && (__ARMCC_VERSION >= 6010050))
kadonotakashi 0:8fdf9a60065b 442 __main();
kadonotakashi 0:8fdf9a60065b 443
kadonotakashi 0:8fdf9a60065b 444 #elif defined(__ICCARM__)
kadonotakashi 0:8fdf9a60065b 445 __iar_program_start();
kadonotakashi 0:8fdf9a60065b 446
kadonotakashi 0:8fdf9a60065b 447 #elif defined(__GNUC__)
kadonotakashi 0:8fdf9a60065b 448 uint32_t *src_ind = (uint32_t *) &__etext;
kadonotakashi 0:8fdf9a60065b 449 uint32_t *dst_ind = (uint32_t *) &__data_start__;
kadonotakashi 0:8fdf9a60065b 450 uint32_t *dst_end = (uint32_t *) &__data_end__;
kadonotakashi 0:8fdf9a60065b 451
kadonotakashi 0:8fdf9a60065b 452 /* Move .data section from ROM to RAM */
kadonotakashi 0:8fdf9a60065b 453 if (src_ind != dst_ind) {
kadonotakashi 0:8fdf9a60065b 454 for (; dst_ind < dst_end;) {
kadonotakashi 0:8fdf9a60065b 455 *dst_ind ++ = *src_ind ++;
kadonotakashi 0:8fdf9a60065b 456 }
kadonotakashi 0:8fdf9a60065b 457 }
kadonotakashi 0:8fdf9a60065b 458
kadonotakashi 0:8fdf9a60065b 459 /* Initialize .bss section to zero */
kadonotakashi 0:8fdf9a60065b 460 dst_ind = (uint32_t *) &__bss_start__;
kadonotakashi 0:8fdf9a60065b 461 dst_end = (uint32_t *) &__bss_end__;
kadonotakashi 0:8fdf9a60065b 462 if (dst_ind != dst_end) {
kadonotakashi 0:8fdf9a60065b 463 for (; dst_ind < dst_end;) {
kadonotakashi 0:8fdf9a60065b 464 *dst_ind ++ = 0;
kadonotakashi 0:8fdf9a60065b 465 }
kadonotakashi 0:8fdf9a60065b 466 }
kadonotakashi 0:8fdf9a60065b 467
kadonotakashi 0:8fdf9a60065b 468 /* Initialize .bss.extern section to zero */
kadonotakashi 0:8fdf9a60065b 469 dst_ind = (uint32_t *) &__bss_extern_start__;
kadonotakashi 0:8fdf9a60065b 470 dst_end = (uint32_t *) &__bss_extern_end__;
kadonotakashi 0:8fdf9a60065b 471 if (dst_ind != dst_end) {
kadonotakashi 0:8fdf9a60065b 472 for (; dst_ind < dst_end;) {
kadonotakashi 0:8fdf9a60065b 473 *dst_ind ++ = 0;
kadonotakashi 0:8fdf9a60065b 474 }
kadonotakashi 0:8fdf9a60065b 475 }
kadonotakashi 0:8fdf9a60065b 476
kadonotakashi 0:8fdf9a60065b 477 _start();
kadonotakashi 0:8fdf9a60065b 478
kadonotakashi 0:8fdf9a60065b 479 #endif
kadonotakashi 0:8fdf9a60065b 480 /* Infinite loop */
kadonotakashi 0:8fdf9a60065b 481 while (1);
kadonotakashi 0:8fdf9a60065b 482 }
kadonotakashi 0:8fdf9a60065b 483
kadonotakashi 0:8fdf9a60065b 484 /**
kadonotakashi 0:8fdf9a60065b 485 * \brief Default interrupt handler for unused IRQs.
kadonotakashi 0:8fdf9a60065b 486 */
kadonotakashi 0:8fdf9a60065b 487 void Default_Handler(void)
kadonotakashi 0:8fdf9a60065b 488 {
kadonotakashi 0:8fdf9a60065b 489 while (1);
kadonotakashi 0:8fdf9a60065b 490 }