-
Notifications
You must be signed in to change notification settings - Fork 2k
/
system_efr32mg1p.h
152 lines (133 loc) · 6.71 KB
/
system_efr32mg1p.h
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
62
63
64
65
66
67
68
69
70
71
72
73
74
75
76
77
78
79
80
81
82
83
84
85
86
87
88
89
90
91
92
93
94
95
96
97
98
99
100
101
102
103
104
105
106
107
108
109
110
111
112
113
114
115
116
117
118
119
120
121
122
123
124
125
126
127
128
129
130
131
132
133
134
135
136
137
138
139
140
141
142
143
144
145
146
147
148
149
150
151
152
/***************************************************************************//**
* @file system_efr32mg1p.h
* @brief CMSIS Cortex-M3/M4 System Layer for EFR32 devices.
* @version 5.3.3
******************************************************************************
* # License
* <b>Copyright 2017 Silicon Laboratories, Inc. http://www.silabs.com</b>
******************************************************************************
*
* Permission is granted to anyone to use this software for any purpose,
* including commercial applications, and to alter it and redistribute it
* freely, subject to the following restrictions:
*
* 1. The origin of this software must not be misrepresented; you must not
* claim that you wrote the original software.@n
* 2. Altered source versions must be plainly marked as such, and must not be
* misrepresented as being the original software.@n
* 3. This notice may not be removed or altered from any source distribution.
*
* DISCLAIMER OF WARRANTY/LIMITATION OF REMEDIES: Silicon Laboratories, Inc.
* has no obligation to support this Software. Silicon Laboratories, Inc. is
* providing the Software "AS IS", with no express or implied warranties of any
* kind, including, but not limited to, any implied warranties of
* merchantability or fitness for any particular purpose or warranties against
* infringement of any proprietary rights of a third party.
*
* Silicon Laboratories, Inc. will not be liable for any consequential,
* incidental, or special damages, or any other relief, or for any claim by
* any third party, arising from your use of this Software.
*
*****************************************************************************/
#ifndef SYSTEM_EFR32_H
#define SYSTEM_EFR32_H
#ifdef __cplusplus
extern "C" {
#endif
#include <stdint.h>
/**************************************************************************//**
* @addtogroup Parts
* @{
*****************************************************************************/
/**************************************************************************//**
* @addtogroup EFR32 EFR32
* @{
*****************************************************************************/
/*******************************************************************************
************************** GLOBAL VARIABLES *******************************
******************************************************************************/
extern uint32_t SystemCoreClock; /**< System Clock Frequency (Core Clock) */
extern uint32_t SystemHfrcoFreq; /**< System HFRCO frequency */
/*******************************************************************************
***************************** PROTOTYPES **********************************
******************************************************************************/
void Reset_Handler(void); /**< Reset Handler */
void NMI_Handler(void); /**< NMI Handler */
void HardFault_Handler(void); /**< Hard Fault Handler */
void MemManage_Handler(void); /**< MPU Fault Handler */
void BusFault_Handler(void); /**< Bus Fault Handler */
void UsageFault_Handler(void); /**< Usage Fault Handler */
void SVC_Handler(void); /**< SVCall Handler */
void DebugMon_Handler(void); /**< Debug Monitor Handler */
void PendSV_Handler(void); /**< PendSV Handler */
void SysTick_Handler(void); /**< SysTick Handler */
void EMU_IRQHandler(void); /**< EMU IRQ Handler */
void FRC_PRI_IRQHandler(void); /**< FRC_PRI IRQ Handler */
void WDOG0_IRQHandler(void); /**< WDOG0 IRQ Handler */
void FRC_IRQHandler(void); /**< FRC IRQ Handler */
void MODEM_IRQHandler(void); /**< MODEM IRQ Handler */
void RAC_SEQ_IRQHandler(void); /**< RAC_SEQ IRQ Handler */
void RAC_RSM_IRQHandler(void); /**< RAC_RSM IRQ Handler */
void BUFC_IRQHandler(void); /**< BUFC IRQ Handler */
void LDMA_IRQHandler(void); /**< LDMA IRQ Handler */
void GPIO_EVEN_IRQHandler(void); /**< GPIO_EVEN IRQ Handler */
void TIMER0_IRQHandler(void); /**< TIMER0 IRQ Handler */
void USART0_RX_IRQHandler(void); /**< USART0_RX IRQ Handler */
void USART0_TX_IRQHandler(void); /**< USART0_TX IRQ Handler */
void ACMP0_IRQHandler(void); /**< ACMP0 IRQ Handler */
void ADC0_IRQHandler(void); /**< ADC0 IRQ Handler */
void IDAC0_IRQHandler(void); /**< IDAC0 IRQ Handler */
void I2C0_IRQHandler(void); /**< I2C0 IRQ Handler */
void GPIO_ODD_IRQHandler(void); /**< GPIO_ODD IRQ Handler */
void TIMER1_IRQHandler(void); /**< TIMER1 IRQ Handler */
void USART1_RX_IRQHandler(void); /**< USART1_RX IRQ Handler */
void USART1_TX_IRQHandler(void); /**< USART1_TX IRQ Handler */
void LEUART0_IRQHandler(void); /**< LEUART0 IRQ Handler */
void PCNT0_IRQHandler(void); /**< PCNT0 IRQ Handler */
void CMU_IRQHandler(void); /**< CMU IRQ Handler */
void MSC_IRQHandler(void); /**< MSC IRQ Handler */
void CRYPTO_IRQHandler(void); /**< CRYPTO IRQ Handler */
void LETIMER0_IRQHandler(void); /**< LETIMER0 IRQ Handler */
void AGC_IRQHandler(void); /**< AGC IRQ Handler */
void PROTIMER_IRQHandler(void); /**< PROTIMER IRQ Handler */
void RTCC_IRQHandler(void); /**< RTCC IRQ Handler */
void SYNTH_IRQHandler(void); /**< SYNTH IRQ Handler */
void CRYOTIMER_IRQHandler(void); /**< CRYOTIMER IRQ Handler */
void RFSENSE_IRQHandler(void); /**< RFSENSE IRQ Handler */
#if (__FPU_PRESENT == 1)
void FPUEH_IRQHandler(void); /**< FPUEH IRQ Handler */
#endif
uint32_t SystemCoreClockGet(void);
/**************************************************************************//**
* @brief
* Update CMSIS SystemCoreClock variable.
*
* @details
* CMSIS defines a global variable SystemCoreClock that shall hold the
* core frequency in Hz. If the core frequency is dynamically changed, the
* variable must be kept updated in order to be CMSIS compliant.
*
* Notice that only if changing the core clock frequency through the EFR CMU
* API, this variable will be kept updated. This function is only provided
* for CMSIS compliance and if a user modifies the the core clock outside
* the CMU API.
*****************************************************************************/
static __INLINE void SystemCoreClockUpdate(void)
{
SystemCoreClockGet();
}
uint32_t SystemMaxCoreClockGet(void);
void SystemInit(void);
uint32_t SystemHFClockGet(void);
uint32_t SystemHFXOClockGet(void);
void SystemHFXOClockSet(uint32_t freq);
uint32_t SystemLFRCOClockGet(void);
uint32_t SystemULFRCOClockGet(void);
uint32_t SystemLFXOClockGet(void);
void SystemLFXOClockSet(uint32_t freq);
/** @} End of group */
/** @} End of group Parts */
#ifdef __cplusplus
}
#endif
#endif /* SYSTEM_EFR32_H */