NANO103 BSP V3.01.004
The Board Support Package for Nano103 Series
sys.c
Go to the documentation of this file.
1/**************************************************************************/
13#include "Nano103.h"
41void SYS_ClearResetSrc(uint32_t u32Src)
42{
43 SYS->RSTSTS = u32Src;
44}
45
53uint32_t SYS_GetBODStatus(void)
54{
55 return ((SYS->BODCTL & SYS_BODCTL_BODOUT_Msk) >> SYS_BODCTL_BODOUT_Pos);
56}
57
63uint32_t SYS_GetResetSrc(void)
64{
65 return (SYS->RSTSTS);
66}
67
74uint32_t SYS_IsRegLocked(void)
75{
76 return !(SYS->REGLCTL & SYS_REGLCTL_REGLCTL_Msk);
77}
78
84uint32_t SYS_ReadPDID(void)
85{
86 return SYS->PDID;
87}
88
94void SYS_ResetChip(void)
95{
96 SYS->IPRST1 |= SYS_IPRST1_CHIPRST_Msk;
97}
98
104void SYS_ResetCPU(void)
105{
106 SYS->IPRST1 |= SYS_IPRST1_CPURST_Msk;
107}
108
135void SYS_ResetModule(uint32_t u32ModuleIndex)
136{
137 *(volatile uint32_t *)((uint32_t)&(SYS->IPRST1) + (u32ModuleIndex>>24)) |= 1<<(u32ModuleIndex & 0x00ffffff);
138 *(volatile uint32_t *)((uint32_t)&(SYS->IPRST1) + (u32ModuleIndex>>24)) &= ~(1<<(u32ModuleIndex & 0x00ffffff));
139}
140
166void SYS_EnableBOD(int32_t i32Mode, uint32_t u32BODLevel)
167{
168 SYS->BODCTL = (SYS->BODCTL & ~0xFFFF) | SYS_BODCTL_BODEN_Msk | (i32Mode | u32BODLevel);
169}
170
177{
178 SYS->BODCTL = SYS->BODCTL & ~(SYS_BODCTL_BODEN_Msk);
179}
180
193void SYS_EnableLPBOD(int32_t i32Mode, uint32_t u32BODLevel)
194{
195 SYS->BODCTL = (SYS->BODCTL & ~0xFFFF) | SYS_BODCTL_LPBODEN_Msk | (i32Mode | u32BODLevel);
196}
197
204{
205 SYS->BODCTL = SYS->BODCTL & ~(SYS_BODCTL_LPBODEN_Msk);
206}
207
221void SYS_EnableHIRC0Trim(uint32_t u32TrimSel,uint32_t u32TrimEnInt)
222{
223 SYS->IRC0TIEN = (SYS->IRC0TIEN & ~(SYS_IRC0TIEN_TFAILIEN_Msk | SYS_IRC0TIEN_CLKEIEN_Msk)) | u32TrimEnInt;
224 SYS->IRC0TCTL = (SYS->IRC0TCTL & ~SYS_IRC0TCTL_FREQSEL_Msk)|u32TrimSel;
225}
226
233{
234 SYS->IRC0TCTL = 0;
235}
236
247void SYS_EnableHIRC1Trim(uint32_t u32TrimSel,uint32_t u32TrimEnInt)
248{
249 SYS->IRC1TIEN = (SYS->IRC1TIEN & ~(SYS_IRC1TIEN_TFAILIEN_Msk | SYS_IRC1TIEN_CLKEIEN_Msk)) | u32TrimEnInt;
250 SYS->IRC1TCTL = (SYS->IRC1TCTL & ~SYS_IRC1TCTL_FREQSEL_Msk)|u32TrimSel;
251}
252
259{
260 SYS->IRC1TCTL = 0;
261}
262
273void SYS_EnableMIRCTrim(uint32_t u32TrimSel,uint32_t u32TrimEnInt)
274{
275 SYS->MIRCTIEN = (SYS->MIRCTIEN & ~(SYS_MIRCTIEN_TFAILIEN_Msk | SYS_MIRCTIEN_CLKEIEN_Msk)) | u32TrimEnInt;
276 SYS->MIRCTCTL = (SYS->MIRCTCTL & ~SYS_MIRCTCTL_FREQSEL_Msk)|u32TrimSel;
277}
278
285{
286 SYS->MIRCTCTL = 0;
287}
288 /* end of group NANO103_SYS_EXPORTED_FUNCTIONS */
290 /* end of group NANO103_SYS_Driver */
292 /* end of group NANO103_Device_Driver */
294
295/*** (C) COPYRIGHT 2015 Nuvoton Technology Corp. ***/
NANO103 peripheral access layer header file. This file contains all the peripheral register's definit...
#define SYS_MIRCTIEN_TFAILIEN_Msk
Definition: Nano103.h:2089
#define SYS_REGLCTL_REGLCTL_Msk
Definition: Nano103.h:2104
#define SYS_BODCTL_BODEN_Msk
Definition: Nano103.h:1897
#define SYS_IRC1TIEN_CLKEIEN_Msk
Definition: Nano103.h:2065
#define SYS_BODCTL_BODOUT_Pos
Definition: Nano103.h:1908
#define SYS_MIRCTIEN_CLKEIEN_Msk
Definition: Nano103.h:2092
#define SYS_BODCTL_LPBODEN_Msk
Definition: Nano103.h:1915
#define SYS_BODCTL_BODOUT_Msk
Definition: Nano103.h:1909
#define SYS_IRC0TIEN_TFAILIEN_Msk
Definition: Nano103.h:2035
#define SYS_IPRST1_CHIPRST_Msk
Definition: Nano103.h:1654
#define SYS_IPRST1_CPURST_Msk
Definition: Nano103.h:1657
#define SYS_IRC1TIEN_TFAILIEN_Msk
Definition: Nano103.h:2062
#define SYS_IRC0TIEN_CLKEIEN_Msk
Definition: Nano103.h:2038
#define SYS
Pointer to SYS register structure.
Definition: Nano103.h:13801
void SYS_ResetCPU(void)
This function reset CPU.
Definition: sys.c:104
uint32_t SYS_GetBODStatus(void)
Get Brown-out detector output status.
Definition: sys.c:53
void SYS_DisableHIRC1Trim(void)
This function disable HIRC1 trim function.
Definition: sys.c:258
void SYS_EnableMIRCTrim(uint32_t u32TrimSel, uint32_t u32TrimEnInt)
This function enable MIRC trim function.
Definition: sys.c:273
void SYS_DisableLPBOD(void)
This function disable Low Power BOD function.
Definition: sys.c:203
uint32_t SYS_GetResetSrc(void)
This function get the system reset source register value.
Definition: sys.c:63
void SYS_EnableBOD(int32_t i32Mode, uint32_t u32BODLevel)
This function configure Normal BOD function. Configure BOD reset or interrupt mode and set Brown-out ...
Definition: sys.c:166
void SYS_DisableHIRC0Trim(void)
This function disable HIRC0 trim function.
Definition: sys.c:232
void SYS_ResetModule(uint32_t u32ModuleIndex)
This function reset selected modules.
Definition: sys.c:135
void SYS_EnableHIRC1Trim(uint32_t u32TrimSel, uint32_t u32TrimEnInt)
This function enable HIRC1 trim function.
Definition: sys.c:247
void SYS_EnableLPBOD(int32_t i32Mode, uint32_t u32BODLevel)
This function configure Low Power BOD function only valid in Power Down mode. Configure Low Power BOD...
Definition: sys.c:193
void SYS_EnableHIRC0Trim(uint32_t u32TrimSel, uint32_t u32TrimEnInt)
This function enable HIRC0 trim function.
Definition: sys.c:221
uint32_t SYS_ReadPDID(void)
This function get product ID.
Definition: sys.c:84
void SYS_DisableBOD(void)
This function disable Normal BOD function.
Definition: sys.c:176
uint32_t SYS_IsRegLocked(void)
This function check register write-protection bit setting.
Definition: sys.c:74
void SYS_ClearResetSrc(uint32_t u32Src)
Clear reset source.
Definition: sys.c:41
void SYS_ResetChip(void)
This function reset chip.
Definition: sys.c:94
void SYS_DisableMIRCTrim(void)
This function disable HIRC0 trim function.
Definition: sys.c:284