You cannot select more than 25 topics
Topics must start with a letter or number, can include dashes ('-') and can be up to 35 characters long.
386 lines
26 KiB
C
386 lines
26 KiB
C
/**
|
|
* \file
|
|
*
|
|
* \brief GCC startup file for ATSAMD51G18A
|
|
*
|
|
* Copyright (c) 2020 Microchip Technology Inc.
|
|
*
|
|
* \license_start
|
|
*
|
|
* \page License
|
|
*
|
|
* SPDX-License-Identifier: Apache-2.0
|
|
*
|
|
* Licensed 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.
|
|
*
|
|
* \license_stop
|
|
*
|
|
*/
|
|
|
|
#include "samd51g18a.h"
|
|
|
|
/* Initialize segments */
|
|
extern uint32_t _sfixed;
|
|
extern uint32_t _efixed;
|
|
extern uint32_t _etext;
|
|
extern uint32_t _srelocate;
|
|
extern uint32_t _erelocate;
|
|
extern uint32_t _szero;
|
|
extern uint32_t _ezero;
|
|
extern uint32_t _sstack;
|
|
extern uint32_t _estack;
|
|
|
|
/** \cond DOXYGEN_SHOULD_SKIP_THIS */
|
|
int main(void);
|
|
/** \endcond */
|
|
|
|
void __libc_init_array(void);
|
|
|
|
/* Reset handler */
|
|
void Reset_Handler(void);
|
|
|
|
/* Default empty handler */
|
|
void Dummy_Handler(void);
|
|
|
|
/* Cortex-M4 core handlers */
|
|
void NonMaskableInt_Handler ( void ) __attribute__ ((weak, alias("Dummy_Handler")));
|
|
void HardFault_Handler ( void ) __attribute__ ((weak, alias("Dummy_Handler")));
|
|
void MemoryManagement_Handler ( void ) __attribute__ ((weak, alias("Dummy_Handler")));
|
|
void BusFault_Handler ( void ) __attribute__ ((weak, alias("Dummy_Handler")));
|
|
void UsageFault_Handler ( void ) __attribute__ ((weak, alias("Dummy_Handler")));
|
|
void SVCall_Handler ( void ) __attribute__ ((weak, alias("Dummy_Handler")));
|
|
void DebugMonitor_Handler ( void ) __attribute__ ((weak, alias("Dummy_Handler")));
|
|
void PendSV_Handler ( void ) __attribute__ ((weak, alias("Dummy_Handler")));
|
|
void SysTick_Handler ( void ) __attribute__ ((weak, alias("Dummy_Handler")));
|
|
|
|
/* Peripherals handlers */
|
|
void PM_Handler ( void ) __attribute__ ((weak, alias("Dummy_Handler")));
|
|
void MCLK_Handler ( void ) __attribute__ ((weak, alias("Dummy_Handler")));
|
|
void OSCCTRL_XOSC0_Handler ( void ) __attribute__ ((weak, alias("Dummy_Handler")));
|
|
void OSCCTRL_XOSC1_Handler ( void ) __attribute__ ((weak, alias("Dummy_Handler")));
|
|
void OSCCTRL_DFLL_Handler ( void ) __attribute__ ((weak, alias("Dummy_Handler")));
|
|
void OSCCTRL_DPLL0_Handler ( void ) __attribute__ ((weak, alias("Dummy_Handler")));
|
|
void OSCCTRL_DPLL1_Handler ( void ) __attribute__ ((weak, alias("Dummy_Handler")));
|
|
void OSC32KCTRL_Handler ( void ) __attribute__ ((weak, alias("Dummy_Handler")));
|
|
void SUPC_OTHER_Handler ( void ) __attribute__ ((weak, alias("Dummy_Handler")));
|
|
void SUPC_BODDET_Handler ( void ) __attribute__ ((weak, alias("Dummy_Handler")));
|
|
void WDT_Handler ( void ) __attribute__ ((weak, alias("Dummy_Handler")));
|
|
void RTC_Handler ( void ) __attribute__ ((weak, alias("Dummy_Handler")));
|
|
void EIC_EXTINT_0_Handler ( void ) __attribute__ ((weak, alias("Dummy_Handler")));
|
|
void EIC_EXTINT_1_Handler ( void ) __attribute__ ((weak, alias("Dummy_Handler")));
|
|
void EIC_EXTINT_2_Handler ( void ) __attribute__ ((weak, alias("Dummy_Handler")));
|
|
void EIC_EXTINT_3_Handler ( void ) __attribute__ ((weak, alias("Dummy_Handler")));
|
|
void EIC_EXTINT_4_Handler ( void ) __attribute__ ((weak, alias("Dummy_Handler")));
|
|
void EIC_EXTINT_5_Handler ( void ) __attribute__ ((weak, alias("Dummy_Handler")));
|
|
void EIC_EXTINT_6_Handler ( void ) __attribute__ ((weak, alias("Dummy_Handler")));
|
|
void EIC_EXTINT_7_Handler ( void ) __attribute__ ((weak, alias("Dummy_Handler")));
|
|
void EIC_EXTINT_8_Handler ( void ) __attribute__ ((weak, alias("Dummy_Handler")));
|
|
void EIC_EXTINT_9_Handler ( void ) __attribute__ ((weak, alias("Dummy_Handler")));
|
|
void EIC_EXTINT_10_Handler ( void ) __attribute__ ((weak, alias("Dummy_Handler")));
|
|
void EIC_EXTINT_11_Handler ( void ) __attribute__ ((weak, alias("Dummy_Handler")));
|
|
void EIC_EXTINT_12_Handler ( void ) __attribute__ ((weak, alias("Dummy_Handler")));
|
|
void EIC_EXTINT_13_Handler ( void ) __attribute__ ((weak, alias("Dummy_Handler")));
|
|
void EIC_EXTINT_14_Handler ( void ) __attribute__ ((weak, alias("Dummy_Handler")));
|
|
void EIC_EXTINT_15_Handler ( void ) __attribute__ ((weak, alias("Dummy_Handler")));
|
|
void FREQM_Handler ( void ) __attribute__ ((weak, alias("Dummy_Handler")));
|
|
void NVMCTRL_0_Handler ( void ) __attribute__ ((weak, alias("Dummy_Handler")));
|
|
void NVMCTRL_1_Handler ( void ) __attribute__ ((weak, alias("Dummy_Handler")));
|
|
void DMAC_0_Handler ( void ) __attribute__ ((weak, alias("Dummy_Handler")));
|
|
void DMAC_1_Handler ( void ) __attribute__ ((weak, alias("Dummy_Handler")));
|
|
void DMAC_2_Handler ( void ) __attribute__ ((weak, alias("Dummy_Handler")));
|
|
void DMAC_3_Handler ( void ) __attribute__ ((weak, alias("Dummy_Handler")));
|
|
void DMAC_OTHER_Handler ( void ) __attribute__ ((weak, alias("Dummy_Handler")));
|
|
void EVSYS_0_Handler ( void ) __attribute__ ((weak, alias("Dummy_Handler")));
|
|
void EVSYS_1_Handler ( void ) __attribute__ ((weak, alias("Dummy_Handler")));
|
|
void EVSYS_2_Handler ( void ) __attribute__ ((weak, alias("Dummy_Handler")));
|
|
void EVSYS_3_Handler ( void ) __attribute__ ((weak, alias("Dummy_Handler")));
|
|
void EVSYS_OTHER_Handler ( void ) __attribute__ ((weak, alias("Dummy_Handler")));
|
|
void PAC_Handler ( void ) __attribute__ ((weak, alias("Dummy_Handler")));
|
|
void RAMECC_Handler ( void ) __attribute__ ((weak, alias("Dummy_Handler")));
|
|
void SERCOM0_0_Handler ( void ) __attribute__ ((weak, alias("Dummy_Handler")));
|
|
void SERCOM0_1_Handler ( void ) __attribute__ ((weak, alias("Dummy_Handler")));
|
|
void SERCOM0_2_Handler ( void ) __attribute__ ((weak, alias("Dummy_Handler")));
|
|
void SERCOM0_OTHER_Handler ( void ) __attribute__ ((weak, alias("Dummy_Handler")));
|
|
void SERCOM1_0_Handler ( void ) __attribute__ ((weak, alias("Dummy_Handler")));
|
|
void SERCOM1_1_Handler ( void ) __attribute__ ((weak, alias("Dummy_Handler")));
|
|
void SERCOM1_2_Handler ( void ) __attribute__ ((weak, alias("Dummy_Handler")));
|
|
void SERCOM1_OTHER_Handler ( void ) __attribute__ ((weak, alias("Dummy_Handler")));
|
|
void SERCOM2_0_Handler ( void ) __attribute__ ((weak, alias("Dummy_Handler")));
|
|
void SERCOM2_1_Handler ( void ) __attribute__ ((weak, alias("Dummy_Handler")));
|
|
void SERCOM2_2_Handler ( void ) __attribute__ ((weak, alias("Dummy_Handler")));
|
|
void SERCOM2_OTHER_Handler ( void ) __attribute__ ((weak, alias("Dummy_Handler")));
|
|
void SERCOM3_0_Handler ( void ) __attribute__ ((weak, alias("Dummy_Handler")));
|
|
void SERCOM3_1_Handler ( void ) __attribute__ ((weak, alias("Dummy_Handler")));
|
|
void SERCOM3_2_Handler ( void ) __attribute__ ((weak, alias("Dummy_Handler")));
|
|
void SERCOM3_OTHER_Handler ( void ) __attribute__ ((weak, alias("Dummy_Handler")));
|
|
void SERCOM4_0_Handler ( void ) __attribute__ ((weak, alias("Dummy_Handler")));
|
|
void SERCOM4_1_Handler ( void ) __attribute__ ((weak, alias("Dummy_Handler")));
|
|
void SERCOM4_2_Handler ( void ) __attribute__ ((weak, alias("Dummy_Handler")));
|
|
void SERCOM4_OTHER_Handler ( void ) __attribute__ ((weak, alias("Dummy_Handler")));
|
|
void SERCOM5_0_Handler ( void ) __attribute__ ((weak, alias("Dummy_Handler")));
|
|
void SERCOM5_1_Handler ( void ) __attribute__ ((weak, alias("Dummy_Handler")));
|
|
void SERCOM5_2_Handler ( void ) __attribute__ ((weak, alias("Dummy_Handler")));
|
|
void SERCOM5_OTHER_Handler ( void ) __attribute__ ((weak, alias("Dummy_Handler")));
|
|
void USB_OTHER_Handler ( void ) __attribute__ ((weak, alias("Dummy_Handler")));
|
|
void USB_SOF_HSOF_Handler ( void ) __attribute__ ((weak, alias("Dummy_Handler")));
|
|
void USB_TRCPT0_Handler ( void ) __attribute__ ((weak, alias("Dummy_Handler")));
|
|
void USB_TRCPT1_Handler ( void ) __attribute__ ((weak, alias("Dummy_Handler")));
|
|
void TCC0_OTHER_Handler ( void ) __attribute__ ((weak, alias("Dummy_Handler")));
|
|
void TCC0_MC0_Handler ( void ) __attribute__ ((weak, alias("Dummy_Handler")));
|
|
void TCC0_MC1_Handler ( void ) __attribute__ ((weak, alias("Dummy_Handler")));
|
|
void TCC0_MC2_Handler ( void ) __attribute__ ((weak, alias("Dummy_Handler")));
|
|
void TCC0_MC3_Handler ( void ) __attribute__ ((weak, alias("Dummy_Handler")));
|
|
void TCC0_MC4_Handler ( void ) __attribute__ ((weak, alias("Dummy_Handler")));
|
|
void TCC0_MC5_Handler ( void ) __attribute__ ((weak, alias("Dummy_Handler")));
|
|
void TCC1_OTHER_Handler ( void ) __attribute__ ((weak, alias("Dummy_Handler")));
|
|
void TCC1_MC0_Handler ( void ) __attribute__ ((weak, alias("Dummy_Handler")));
|
|
void TCC1_MC1_Handler ( void ) __attribute__ ((weak, alias("Dummy_Handler")));
|
|
void TCC1_MC2_Handler ( void ) __attribute__ ((weak, alias("Dummy_Handler")));
|
|
void TCC1_MC3_Handler ( void ) __attribute__ ((weak, alias("Dummy_Handler")));
|
|
void TCC2_OTHER_Handler ( void ) __attribute__ ((weak, alias("Dummy_Handler")));
|
|
void TCC2_MC0_Handler ( void ) __attribute__ ((weak, alias("Dummy_Handler")));
|
|
void TCC2_MC1_Handler ( void ) __attribute__ ((weak, alias("Dummy_Handler")));
|
|
void TCC2_MC2_Handler ( void ) __attribute__ ((weak, alias("Dummy_Handler")));
|
|
void TC0_Handler ( void ) __attribute__ ((weak, alias("Dummy_Handler")));
|
|
void TC1_Handler ( void ) __attribute__ ((weak, alias("Dummy_Handler")));
|
|
void TC2_Handler ( void ) __attribute__ ((weak, alias("Dummy_Handler")));
|
|
void TC3_Handler ( void ) __attribute__ ((weak, alias("Dummy_Handler")));
|
|
void PDEC_OTHER_Handler ( void ) __attribute__ ((weak, alias("Dummy_Handler")));
|
|
void PDEC_MC0_Handler ( void ) __attribute__ ((weak, alias("Dummy_Handler")));
|
|
void PDEC_MC1_Handler ( void ) __attribute__ ((weak, alias("Dummy_Handler")));
|
|
void ADC0_OTHER_Handler ( void ) __attribute__ ((weak, alias("Dummy_Handler")));
|
|
void ADC0_RESRDY_Handler ( void ) __attribute__ ((weak, alias("Dummy_Handler")));
|
|
void ADC1_OTHER_Handler ( void ) __attribute__ ((weak, alias("Dummy_Handler")));
|
|
void ADC1_RESRDY_Handler ( void ) __attribute__ ((weak, alias("Dummy_Handler")));
|
|
void AC_Handler ( void ) __attribute__ ((weak, alias("Dummy_Handler")));
|
|
void DAC_OTHER_Handler ( void ) __attribute__ ((weak, alias("Dummy_Handler")));
|
|
void DAC_EMPTY_0_Handler ( void ) __attribute__ ((weak, alias("Dummy_Handler")));
|
|
void DAC_EMPTY_1_Handler ( void ) __attribute__ ((weak, alias("Dummy_Handler")));
|
|
void DAC_RESRDY_0_Handler ( void ) __attribute__ ((weak, alias("Dummy_Handler")));
|
|
void DAC_RESRDY_1_Handler ( void ) __attribute__ ((weak, alias("Dummy_Handler")));
|
|
void PCC_Handler ( void ) __attribute__ ((weak, alias("Dummy_Handler")));
|
|
void AES_Handler ( void ) __attribute__ ((weak, alias("Dummy_Handler")));
|
|
void TRNG_Handler ( void ) __attribute__ ((weak, alias("Dummy_Handler")));
|
|
void ICM_Handler ( void ) __attribute__ ((weak, alias("Dummy_Handler")));
|
|
void PUKCC_Handler ( void ) __attribute__ ((weak, alias("Dummy_Handler")));
|
|
void QSPI_Handler ( void ) __attribute__ ((weak, alias("Dummy_Handler")));
|
|
void SDHC0_Handler ( void ) __attribute__ ((weak, alias("Dummy_Handler")));
|
|
|
|
/* Exception Table */
|
|
__attribute__ ((section(".vectors")))
|
|
const DeviceVectors exception_table = {
|
|
|
|
/* Configure Initial Stack Pointer, using linker-generated symbols */
|
|
.pvStack = (void*) (&_estack),
|
|
|
|
.pfnReset_Handler = (void*) Reset_Handler,
|
|
.pfnNonMaskableInt_Handler = (void*) NonMaskableInt_Handler,
|
|
.pfnHardFault_Handler = (void*) HardFault_Handler,
|
|
.pfnMemoryManagement_Handler = (void*) MemoryManagement_Handler,
|
|
.pfnBusFault_Handler = (void*) BusFault_Handler,
|
|
.pfnUsageFault_Handler = (void*) UsageFault_Handler,
|
|
.pvReservedC9 = (void*) (0UL), /* Reserved */
|
|
.pvReservedC8 = (void*) (0UL), /* Reserved */
|
|
.pvReservedC7 = (void*) (0UL), /* Reserved */
|
|
.pvReservedC6 = (void*) (0UL), /* Reserved */
|
|
.pfnSVCall_Handler = (void*) SVCall_Handler,
|
|
.pfnDebugMonitor_Handler = (void*) DebugMonitor_Handler,
|
|
.pvReservedC3 = (void*) (0UL), /* Reserved */
|
|
.pfnPendSV_Handler = (void*) PendSV_Handler,
|
|
.pfnSysTick_Handler = (void*) SysTick_Handler,
|
|
|
|
/* Configurable interrupts */
|
|
.pfnPM_Handler = (void*) PM_Handler, /* 0 Power Manager */
|
|
.pfnMCLK_Handler = (void*) MCLK_Handler, /* 1 Main Clock */
|
|
.pfnOSCCTRL_XOSC0_Handler = (void*) OSCCTRL_XOSC0_Handler, /* 2 Oscillators Control */
|
|
.pfnOSCCTRL_XOSC1_Handler = (void*) OSCCTRL_XOSC1_Handler, /* 3 Oscillators Control */
|
|
.pfnOSCCTRL_DFLL_Handler = (void*) OSCCTRL_DFLL_Handler, /* 4 Oscillators Control */
|
|
.pfnOSCCTRL_DPLL0_Handler = (void*) OSCCTRL_DPLL0_Handler, /* 5 Oscillators Control */
|
|
.pfnOSCCTRL_DPLL1_Handler = (void*) OSCCTRL_DPLL1_Handler, /* 6 Oscillators Control */
|
|
.pfnOSC32KCTRL_Handler = (void*) OSC32KCTRL_Handler, /* 7 32kHz Oscillators Control */
|
|
.pfnSUPC_OTHER_Handler = (void*) SUPC_OTHER_Handler, /* 8 Supply Controller */
|
|
.pfnSUPC_BODDET_Handler = (void*) SUPC_BODDET_Handler, /* 9 Supply Controller */
|
|
.pfnWDT_Handler = (void*) WDT_Handler, /* 10 Watchdog Timer */
|
|
.pfnRTC_Handler = (void*) RTC_Handler, /* 11 Real-Time Counter */
|
|
.pfnEIC_EXTINT_0_Handler = (void*) EIC_EXTINT_0_Handler, /* 12 External Interrupt Controller */
|
|
.pfnEIC_EXTINT_1_Handler = (void*) EIC_EXTINT_1_Handler, /* 13 External Interrupt Controller */
|
|
.pfnEIC_EXTINT_2_Handler = (void*) EIC_EXTINT_2_Handler, /* 14 External Interrupt Controller */
|
|
.pfnEIC_EXTINT_3_Handler = (void*) EIC_EXTINT_3_Handler, /* 15 External Interrupt Controller */
|
|
.pfnEIC_EXTINT_4_Handler = (void*) EIC_EXTINT_4_Handler, /* 16 External Interrupt Controller */
|
|
.pfnEIC_EXTINT_5_Handler = (void*) EIC_EXTINT_5_Handler, /* 17 External Interrupt Controller */
|
|
.pfnEIC_EXTINT_6_Handler = (void*) EIC_EXTINT_6_Handler, /* 18 External Interrupt Controller */
|
|
.pfnEIC_EXTINT_7_Handler = (void*) EIC_EXTINT_7_Handler, /* 19 External Interrupt Controller */
|
|
.pfnEIC_EXTINT_8_Handler = (void*) EIC_EXTINT_8_Handler, /* 20 External Interrupt Controller */
|
|
.pfnEIC_EXTINT_9_Handler = (void*) EIC_EXTINT_9_Handler, /* 21 External Interrupt Controller */
|
|
.pfnEIC_EXTINT_10_Handler = (void*) EIC_EXTINT_10_Handler, /* 22 External Interrupt Controller */
|
|
.pfnEIC_EXTINT_11_Handler = (void*) EIC_EXTINT_11_Handler, /* 23 External Interrupt Controller */
|
|
.pfnEIC_EXTINT_12_Handler = (void*) EIC_EXTINT_12_Handler, /* 24 External Interrupt Controller */
|
|
.pfnEIC_EXTINT_13_Handler = (void*) EIC_EXTINT_13_Handler, /* 25 External Interrupt Controller */
|
|
.pfnEIC_EXTINT_14_Handler = (void*) EIC_EXTINT_14_Handler, /* 26 External Interrupt Controller */
|
|
.pfnEIC_EXTINT_15_Handler = (void*) EIC_EXTINT_15_Handler, /* 27 External Interrupt Controller */
|
|
.pfnFREQM_Handler = (void*) FREQM_Handler, /* 28 Frequency Meter */
|
|
.pfnNVMCTRL_0_Handler = (void*) NVMCTRL_0_Handler, /* 29 Non-Volatile Memory Controller */
|
|
.pfnNVMCTRL_1_Handler = (void*) NVMCTRL_1_Handler, /* 30 Non-Volatile Memory Controller */
|
|
.pfnDMAC_0_Handler = (void*) DMAC_0_Handler, /* 31 Direct Memory Access Controller */
|
|
.pfnDMAC_1_Handler = (void*) DMAC_1_Handler, /* 32 Direct Memory Access Controller */
|
|
.pfnDMAC_2_Handler = (void*) DMAC_2_Handler, /* 33 Direct Memory Access Controller */
|
|
.pfnDMAC_3_Handler = (void*) DMAC_3_Handler, /* 34 Direct Memory Access Controller */
|
|
.pfnDMAC_OTHER_Handler = (void*) DMAC_OTHER_Handler, /* 35 Direct Memory Access Controller */
|
|
.pfnEVSYS_0_Handler = (void*) EVSYS_0_Handler, /* 36 Event System Interface */
|
|
.pfnEVSYS_1_Handler = (void*) EVSYS_1_Handler, /* 37 Event System Interface */
|
|
.pfnEVSYS_2_Handler = (void*) EVSYS_2_Handler, /* 38 Event System Interface */
|
|
.pfnEVSYS_3_Handler = (void*) EVSYS_3_Handler, /* 39 Event System Interface */
|
|
.pfnEVSYS_OTHER_Handler = (void*) EVSYS_OTHER_Handler, /* 40 Event System Interface */
|
|
.pfnPAC_Handler = (void*) PAC_Handler, /* 41 Peripheral Access Controller */
|
|
.pvReserved42 = (void*) (0UL), /* 42 Reserved */
|
|
.pvReserved43 = (void*) (0UL), /* 43 Reserved */
|
|
.pvReserved44 = (void*) (0UL), /* 44 Reserved */
|
|
.pfnRAMECC_Handler = (void*) RAMECC_Handler, /* 45 RAM ECC */
|
|
.pfnSERCOM0_0_Handler = (void*) SERCOM0_0_Handler, /* 46 Serial Communication Interface */
|
|
.pfnSERCOM0_1_Handler = (void*) SERCOM0_1_Handler, /* 47 Serial Communication Interface */
|
|
.pfnSERCOM0_2_Handler = (void*) SERCOM0_2_Handler, /* 48 Serial Communication Interface */
|
|
.pfnSERCOM0_OTHER_Handler = (void*) SERCOM0_OTHER_Handler, /* 49 Serial Communication Interface */
|
|
.pfnSERCOM1_0_Handler = (void*) SERCOM1_0_Handler, /* 50 Serial Communication Interface */
|
|
.pfnSERCOM1_1_Handler = (void*) SERCOM1_1_Handler, /* 51 Serial Communication Interface */
|
|
.pfnSERCOM1_2_Handler = (void*) SERCOM1_2_Handler, /* 52 Serial Communication Interface */
|
|
.pfnSERCOM1_OTHER_Handler = (void*) SERCOM1_OTHER_Handler, /* 53 Serial Communication Interface */
|
|
.pfnSERCOM2_0_Handler = (void*) SERCOM2_0_Handler, /* 54 Serial Communication Interface */
|
|
.pfnSERCOM2_1_Handler = (void*) SERCOM2_1_Handler, /* 55 Serial Communication Interface */
|
|
.pfnSERCOM2_2_Handler = (void*) SERCOM2_2_Handler, /* 56 Serial Communication Interface */
|
|
.pfnSERCOM2_OTHER_Handler = (void*) SERCOM2_OTHER_Handler, /* 57 Serial Communication Interface */
|
|
.pfnSERCOM3_0_Handler = (void*) SERCOM3_0_Handler, /* 58 Serial Communication Interface */
|
|
.pfnSERCOM3_1_Handler = (void*) SERCOM3_1_Handler, /* 59 Serial Communication Interface */
|
|
.pfnSERCOM3_2_Handler = (void*) SERCOM3_2_Handler, /* 60 Serial Communication Interface */
|
|
.pfnSERCOM3_OTHER_Handler = (void*) SERCOM3_OTHER_Handler, /* 61 Serial Communication Interface */
|
|
.pfnSERCOM4_0_Handler = (void*) SERCOM4_0_Handler, /* 62 Serial Communication Interface */
|
|
.pfnSERCOM4_1_Handler = (void*) SERCOM4_1_Handler, /* 63 Serial Communication Interface */
|
|
.pfnSERCOM4_2_Handler = (void*) SERCOM4_2_Handler, /* 64 Serial Communication Interface */
|
|
.pfnSERCOM4_OTHER_Handler = (void*) SERCOM4_OTHER_Handler, /* 65 Serial Communication Interface */
|
|
.pfnSERCOM5_0_Handler = (void*) SERCOM5_0_Handler, /* 66 Serial Communication Interface */
|
|
.pfnSERCOM5_1_Handler = (void*) SERCOM5_1_Handler, /* 67 Serial Communication Interface */
|
|
.pfnSERCOM5_2_Handler = (void*) SERCOM5_2_Handler, /* 68 Serial Communication Interface */
|
|
.pfnSERCOM5_OTHER_Handler = (void*) SERCOM5_OTHER_Handler, /* 69 Serial Communication Interface */
|
|
.pvReserved70 = (void*) (0UL), /* 70 Reserved */
|
|
.pvReserved71 = (void*) (0UL), /* 71 Reserved */
|
|
.pvReserved72 = (void*) (0UL), /* 72 Reserved */
|
|
.pvReserved73 = (void*) (0UL), /* 73 Reserved */
|
|
.pvReserved74 = (void*) (0UL), /* 74 Reserved */
|
|
.pvReserved75 = (void*) (0UL), /* 75 Reserved */
|
|
.pvReserved76 = (void*) (0UL), /* 76 Reserved */
|
|
.pvReserved77 = (void*) (0UL), /* 77 Reserved */
|
|
.pvReserved78 = (void*) (0UL), /* 78 Reserved */
|
|
.pvReserved79 = (void*) (0UL), /* 79 Reserved */
|
|
.pfnUSB_OTHER_Handler = (void*) USB_OTHER_Handler, /* 80 Universal Serial Bus */
|
|
.pfnUSB_SOF_HSOF_Handler = (void*) USB_SOF_HSOF_Handler, /* 81 Universal Serial Bus */
|
|
.pfnUSB_TRCPT0_Handler = (void*) USB_TRCPT0_Handler, /* 82 Universal Serial Bus */
|
|
.pfnUSB_TRCPT1_Handler = (void*) USB_TRCPT1_Handler, /* 83 Universal Serial Bus */
|
|
.pvReserved84 = (void*) (0UL), /* 84 Reserved */
|
|
.pfnTCC0_OTHER_Handler = (void*) TCC0_OTHER_Handler, /* 85 Timer Counter Control */
|
|
.pfnTCC0_MC0_Handler = (void*) TCC0_MC0_Handler, /* 86 Timer Counter Control */
|
|
.pfnTCC0_MC1_Handler = (void*) TCC0_MC1_Handler, /* 87 Timer Counter Control */
|
|
.pfnTCC0_MC2_Handler = (void*) TCC0_MC2_Handler, /* 88 Timer Counter Control */
|
|
.pfnTCC0_MC3_Handler = (void*) TCC0_MC3_Handler, /* 89 Timer Counter Control */
|
|
.pfnTCC0_MC4_Handler = (void*) TCC0_MC4_Handler, /* 90 Timer Counter Control */
|
|
.pfnTCC0_MC5_Handler = (void*) TCC0_MC5_Handler, /* 91 Timer Counter Control */
|
|
.pfnTCC1_OTHER_Handler = (void*) TCC1_OTHER_Handler, /* 92 Timer Counter Control */
|
|
.pfnTCC1_MC0_Handler = (void*) TCC1_MC0_Handler, /* 93 Timer Counter Control */
|
|
.pfnTCC1_MC1_Handler = (void*) TCC1_MC1_Handler, /* 94 Timer Counter Control */
|
|
.pfnTCC1_MC2_Handler = (void*) TCC1_MC2_Handler, /* 95 Timer Counter Control */
|
|
.pfnTCC1_MC3_Handler = (void*) TCC1_MC3_Handler, /* 96 Timer Counter Control */
|
|
.pfnTCC2_OTHER_Handler = (void*) TCC2_OTHER_Handler, /* 97 Timer Counter Control */
|
|
.pfnTCC2_MC0_Handler = (void*) TCC2_MC0_Handler, /* 98 Timer Counter Control */
|
|
.pfnTCC2_MC1_Handler = (void*) TCC2_MC1_Handler, /* 99 Timer Counter Control */
|
|
.pfnTCC2_MC2_Handler = (void*) TCC2_MC2_Handler, /* 100 Timer Counter Control */
|
|
.pvReserved101 = (void*) (0UL), /* 101 Reserved */
|
|
.pvReserved102 = (void*) (0UL), /* 102 Reserved */
|
|
.pvReserved103 = (void*) (0UL), /* 103 Reserved */
|
|
.pvReserved104 = (void*) (0UL), /* 104 Reserved */
|
|
.pvReserved105 = (void*) (0UL), /* 105 Reserved */
|
|
.pvReserved106 = (void*) (0UL), /* 106 Reserved */
|
|
.pfnTC0_Handler = (void*) TC0_Handler, /* 107 Basic Timer Counter */
|
|
.pfnTC1_Handler = (void*) TC1_Handler, /* 108 Basic Timer Counter */
|
|
.pfnTC2_Handler = (void*) TC2_Handler, /* 109 Basic Timer Counter */
|
|
.pfnTC3_Handler = (void*) TC3_Handler, /* 110 Basic Timer Counter */
|
|
.pvReserved111 = (void*) (0UL), /* 111 Reserved */
|
|
.pvReserved112 = (void*) (0UL), /* 112 Reserved */
|
|
.pvReserved113 = (void*) (0UL), /* 113 Reserved */
|
|
.pvReserved114 = (void*) (0UL), /* 114 Reserved */
|
|
.pfnPDEC_OTHER_Handler = (void*) PDEC_OTHER_Handler, /* 115 Quadrature Decodeur */
|
|
.pfnPDEC_MC0_Handler = (void*) PDEC_MC0_Handler, /* 116 Quadrature Decodeur */
|
|
.pfnPDEC_MC1_Handler = (void*) PDEC_MC1_Handler, /* 117 Quadrature Decodeur */
|
|
.pfnADC0_OTHER_Handler = (void*) ADC0_OTHER_Handler, /* 118 Analog Digital Converter */
|
|
.pfnADC0_RESRDY_Handler = (void*) ADC0_RESRDY_Handler, /* 119 Analog Digital Converter */
|
|
.pfnADC1_OTHER_Handler = (void*) ADC1_OTHER_Handler, /* 120 Analog Digital Converter */
|
|
.pfnADC1_RESRDY_Handler = (void*) ADC1_RESRDY_Handler, /* 121 Analog Digital Converter */
|
|
.pfnAC_Handler = (void*) AC_Handler, /* 122 Analog Comparators */
|
|
.pfnDAC_OTHER_Handler = (void*) DAC_OTHER_Handler, /* 123 Digital-to-Analog Converter */
|
|
.pfnDAC_EMPTY_0_Handler = (void*) DAC_EMPTY_0_Handler, /* 124 Digital-to-Analog Converter */
|
|
.pfnDAC_EMPTY_1_Handler = (void*) DAC_EMPTY_1_Handler, /* 125 Digital-to-Analog Converter */
|
|
.pfnDAC_RESRDY_0_Handler = (void*) DAC_RESRDY_0_Handler, /* 126 Digital-to-Analog Converter */
|
|
.pfnDAC_RESRDY_1_Handler = (void*) DAC_RESRDY_1_Handler, /* 127 Digital-to-Analog Converter */
|
|
.pvReserved128 = (void*) (0UL), /* 128 Reserved */
|
|
.pfnPCC_Handler = (void*) PCC_Handler, /* 129 Parallel Capture Controller */
|
|
.pfnAES_Handler = (void*) AES_Handler, /* 130 Advanced Encryption Standard */
|
|
.pfnTRNG_Handler = (void*) TRNG_Handler, /* 131 True Random Generator */
|
|
.pfnICM_Handler = (void*) ICM_Handler, /* 132 Integrity Check Monitor */
|
|
.pfnPUKCC_Handler = (void*) PUKCC_Handler, /* 133 PUblic-Key Cryptography Controller */
|
|
.pfnQSPI_Handler = (void*) QSPI_Handler, /* 134 Quad SPI interface */
|
|
.pfnSDHC0_Handler = (void*) SDHC0_Handler /* 135 SD/MMC Host Controller */
|
|
};
|
|
|
|
/**
|
|
* \brief This is the code that gets called on processor reset.
|
|
* To initialize the device, and call the main() routine.
|
|
*/
|
|
void Reset_Handler(void)
|
|
{
|
|
uint32_t *pSrc, *pDest;
|
|
|
|
/* Initialize the relocate segment */
|
|
pSrc = &_etext;
|
|
pDest = &_srelocate;
|
|
|
|
if (pSrc != pDest) {
|
|
for (; pDest < &_erelocate;) {
|
|
*pDest++ = *pSrc++;
|
|
}
|
|
}
|
|
|
|
/* Clear the zero segment */
|
|
for (pDest = &_szero; pDest < &_ezero;) {
|
|
*pDest++ = 0;
|
|
}
|
|
|
|
/* Set the vector table base address */
|
|
pSrc = (uint32_t *) & _sfixed;
|
|
SCB->VTOR = ((uint32_t) pSrc & SCB_VTOR_TBLOFF_Msk);
|
|
|
|
/* Initialize the C library */
|
|
__libc_init_array();
|
|
|
|
/* Branch to main function */
|
|
main();
|
|
|
|
/* Infinite loop */
|
|
while (1);
|
|
}
|
|
|
|
/**
|
|
* \brief Default interrupt handler for unused IRQs.
|
|
*/
|
|
void Dummy_Handler(void)
|
|
{
|
|
while (1) {
|
|
}
|
|
}
|