/* * Licensed to the Apache Software Foundation (ASF) under one * or more contributor license agreements. See the NOTICE file * distributed with this work for additional information * regarding copyright ownership. The ASF licenses this file * to you under the Apache License, Version 2.0 (the * "License"); you may not use this file except in compliance * with the License. You may obtain a copy of the License at * * http://www.apache.org/licenses/LICENSE-2.0 * * Unless required by applicable law or agreed to in writing, * software distributed under the License is distributed on an * "AS IS" BASIS, WITHOUT WARRANTIES OR CONDITIONS OF ANY * KIND, either express or implied. See the License for the * specific language governing permissions and limitations * under the License. */ #include "nrf.h" /************************************************************************************************** Macros **************************************************************************************************/ /*! Weak symbol reference. */ #define WEAK __attribute__ ((weak)) /************************************************************************************************** Functions **************************************************************************************************/ extern void SystemInit(void); static void SystemDefaultHandler(void); /* Core vectors. */ void WEAK Reset_Handler(void); void WEAK NMI_Handler(void); void WEAK HardFault_Handler(void); void WEAK MemoryManagement_Handler(void); void WEAK BusFault_Handler(void); void WEAK UsageFault_Handler(void); void WEAK SVC_Handler(void); void WEAK DebugMon_Handler(void); void WEAK PendSV_Handler(void); void WEAK SysTick_Handler(void); void WEAK POWER_CLOCK_IRQHandler(void); void WEAK RADIO_IRQHandler(void); void WEAK UARTE0_UART0_IRQHandler(void); void WEAK SPIM0_SPIS0_TWIM0_TWIS0_SPI0_TWI0_IRQHandler(void); void WEAK SPIM1_SPIS1_TWIM1_TWIS1_SPI1_TWI1_IRQHandler(void); void WEAK NFCT_IRQHandler(void); void WEAK GPIOTE_IRQHandler(void); void WEAK SAADC_IRQHandler(void); void WEAK TIMER0_IRQHandler(void); void WEAK TIMER1_IRQHandler(void); void WEAK TIMER2_IRQHandler(void); void WEAK RTC0_IRQHandler(void); void WEAK TEMP_IRQHandler(void); void WEAK RNG_IRQHandler(void); void WEAK ECB_IRQHandler(void); void WEAK CCM_AAR_IRQHandler(void); void WEAK WDT_IRQHandler(void); void WEAK RTC1_IRQHandler(void); void WEAK QDEC_IRQHandler(void); void WEAK COMP_LPCOMP_IRQHandler(void); void WEAK SWI0_EGU0_IRQHandler(void); void WEAK SWI1_EGU1_IRQHandler(void); void WEAK SWI2_EGU2_IRQHandler(void); void WEAK SWI3_EGU3_IRQHandler(void); void WEAK SWI4_EGU4_IRQHandler(void); void WEAK SWI5_EGU5_IRQHandler(void); void WEAK TIMER3_IRQHandler(void); void WEAK TIMER4_IRQHandler(void); void WEAK PWM0_IRQHandler(void); void WEAK PDM_IRQHandler(void); void WEAK MWU_IRQHandler(void); void WEAK PWM1_IRQHandler(void); void WEAK PWM2_IRQHandler(void); void WEAK SPIM2_SPIS2_SPI2_IRQHandler(void); void WEAK RTC2_IRQHandler(void); void WEAK I2S_IRQHandler(void); void WEAK FPU_IRQHandler(void); /* Assign default weak references. Override these values by defining a new function with the same name. */ #pragma weak NMI_Handler = SystemDefaultHandler #pragma weak HardFault_Handler = SystemDefaultHandler #pragma weak MemoryManagement_Handler = SystemDefaultHandler #pragma weak BusFault_Handler = SystemDefaultHandler #pragma weak UsageFault_Handler = SystemDefaultHandler #pragma weak SVC_Handler = SystemDefaultHandler #pragma weak DebugMon_Handler = SystemDefaultHandler #pragma weak PendSV_Handler = SystemDefaultHandler #pragma weak SysTick_Handler = SystemDefaultHandler #pragma weak POWER_CLOCK_IRQHandler = SystemDefaultHandler #pragma weak RADIO_IRQHandler = SystemDefaultHandler #pragma weak UARTE0_UART0_IRQHandler = SystemDefaultHandler #pragma weak SPIM0_SPIS0_TWIM0_TWIS0_SPI0_TWI0_IRQHandler = SystemDefaultHandler #pragma weak SPIM1_SPIS1_TWIM1_TWIS1_SPI1_TWI1_IRQHandler = SystemDefaultHandler #pragma weak NFCT_IRQHandler = SystemDefaultHandler #pragma weak GPIOTE_IRQHandler = SystemDefaultHandler #pragma weak SAADC_IRQHandler = SystemDefaultHandler #pragma weak TIMER0_IRQHandler = SystemDefaultHandler #pragma weak TIMER1_IRQHandler = SystemDefaultHandler #pragma weak TIMER2_IRQHandler = SystemDefaultHandler #pragma weak RTC0_IRQHandler = SystemDefaultHandler #pragma weak TEMP_IRQHandler = SystemDefaultHandler #pragma weak RNG_IRQHandler = SystemDefaultHandler #pragma weak ECB_IRQHandler = SystemDefaultHandler #pragma weak CCM_AAR_IRQHandler = SystemDefaultHandler #pragma weak WDT_IRQHandler = SystemDefaultHandler #pragma weak RTC1_IRQHandler = SystemDefaultHandler #pragma weak QDEC_IRQHandler = SystemDefaultHandler #pragma weak COMP_LPCOMP_IRQHandler = SystemDefaultHandler #pragma weak SWI0_EGU0_IRQHandler = SystemDefaultHandler #pragma weak SWI1_EGU1_IRQHandler = SystemDefaultHandler #pragma weak SWI2_EGU2_IRQHandler = SystemDefaultHandler #pragma weak SWI3_EGU3_IRQHandler = SystemDefaultHandler #pragma weak SWI4_EGU4_IRQHandler = SystemDefaultHandler #pragma weak SWI5_EGU5_IRQHandler = SystemDefaultHandler #pragma weak TIMER3_IRQHandler = SystemDefaultHandler #pragma weak TIMER4_IRQHandler = SystemDefaultHandler #pragma weak PWM0_IRQHandler = SystemDefaultHandler #pragma weak PDM_IRQHandler = SystemDefaultHandler #pragma weak MWU_IRQHandler = SystemDefaultHandler #pragma weak PWM1_IRQHandler = SystemDefaultHandler #pragma weak PWM2_IRQHandler = SystemDefaultHandler #pragma weak SPIM2_SPIS2_SPI2_IRQHandler = SystemDefaultHandler #pragma weak RTC2_IRQHandler = SystemDefaultHandler #pragma weak I2S_IRQHandler = SystemDefaultHandler #pragma weak FPU_IRQHandler = SystemDefaultHandler /************************************************************************************************** Global variables **************************************************************************************************/ /*! Core vector table */ void (* systemVectors[256])(void) = { 0, /* 0: The initial stack pointer */ Reset_Handler, /* 1: The reset handler */ NMI_Handler, /* 2: The NMI handler */ HardFault_Handler, /* 3: The hard fault handler */ MemoryManagement_Handler, /* 4: The MPU fault handler */ BusFault_Handler, /* 5: The bus fault handler */ UsageFault_Handler, /* 6: The usage fault handler */ 0, /* 7: Reserved */ 0, /* 8: Reserved */ 0, /* 9: Reserved */ 0, /* 10: Reserved */ SVC_Handler, /* 11: SVCall handler */ DebugMon_Handler, /* 12: Debug monitor handler */ 0, /* 13: Reserved */ PendSV_Handler, /* 14: The PendSV handler */ SysTick_Handler, /* 15: The SysTick handler */ /* External interrupts */ POWER_CLOCK_IRQHandler, /* 16: POWER_CLOCK */ RADIO_IRQHandler, /* 17: RADIO */ UARTE0_UART0_IRQHandler, /* 18: UART0 */ SPIM0_SPIS0_TWIM0_TWIS0_SPI0_TWI0_IRQHandler, /* 19: SPIM0_SPIS0_TWIM0_TWIS0_SPI0_TWI0 */ SPIM1_SPIS1_TWIM1_TWIS1_SPI1_TWI1_IRQHandler, /* 20: SPIM1_SPIS1_TWIM1_TWIS1_SPI1_TWI1 */ NFCT_IRQHandler, /* 21: NFCT */ GPIOTE_IRQHandler, /* 22: GPIOTE */ SAADC_IRQHandler, /* 23: SAADC */ TIMER0_IRQHandler, /* 24: TIMER0 */ TIMER1_IRQHandler, /* 25: TIMER1 */ TIMER2_IRQHandler, /* 26: TIMER2 */ RTC0_IRQHandler, /* 27: RTC0 */ TEMP_IRQHandler, /* 28: TEMP */ RNG_IRQHandler, /* 29: RNG */ ECB_IRQHandler, /* 30: ECB */ CCM_AAR_IRQHandler, /* 31: CCM_AAR */ WDT_IRQHandler, /* 32: WDT */ RTC1_IRQHandler, /* 33: RTC1 */ QDEC_IRQHandler, /* 34: QDEC */ COMP_LPCOMP_IRQHandler, /* 35: COMP_LPCOMP */ SWI0_EGU0_IRQHandler, /* 36: SWI0_EGU0 */ SWI1_EGU1_IRQHandler, /* 37: SWI1_EGU1 */ SWI2_EGU2_IRQHandler, /* 38: SWI2_EGU2 */ SWI3_EGU3_IRQHandler, /* 39: SWI3_EGU3 */ SWI4_EGU4_IRQHandler, /* 40: SWI4_EGU4 */ SWI5_EGU5_IRQHandler, /* 41: SWI5_EGU5 */ TIMER3_IRQHandler, /* 42: TIMER3 */ TIMER4_IRQHandler, /* 43: TIMER4 */ PWM0_IRQHandler, /* 44: PWM0 */ PDM_IRQHandler, /* 45: PDM */ 0, /* 46: Reserved */ 0, /* 47: Reserved */ MWU_IRQHandler, /* 48: MWU */ PWM1_IRQHandler, /* 49: PWM1 */ PWM2_IRQHandler, /* 50: PWM2 */ SPIM2_SPIS2_SPI2_IRQHandler, /* 51: SPIM2_SPIS2_SPI2 */ RTC2_IRQHandler, /* 52: RTC2 */ I2S_IRQHandler, /* 53: I2S */ FPU_IRQHandler, /* 54: FPU */ 0, /* 55: Reserved */ 0, /* 56: Reserved */ 0, /* 57: Reserved */ 0, /* 58: Reserved */ 0, /* 59: Reserved */ 0, /* 60: Reserved */ 0, /* 61: Reserved */ 0, /* 62: Reserved */ 0 /* 63: Reserved */ /* 64..127: Reserved */ }; /*************************************************************************************************/ /*! * \brief Reset handler. */ /*************************************************************************************************/ void Reset_Handler(void) { /* Core initialization. */ SystemInit(); } /*************************************************************************************************/ /*! * \brief Default vector handler. * * \param None. */ /*************************************************************************************************/ static void SystemDefaultHandler(void) { volatile unsigned int forever = 1; while (forever); }