mbed library sources. Supersedes mbed-src.
Dependents: Nucleo_Hello_Encoder BLE_iBeaconScan AM1805_DEMO DISCO-F429ZI_ExportTemplate1 ... more
targets/TARGET_NUVOTON/TARGET_NANO100/device/StdDriver/nano100_sys.c@174:b96e65c34a4d, 2017-10-02 (annotated)
- Committer:
- AnnaBridge
- Date:
- Mon Oct 02 15:33:19 2017 +0100
- Revision:
- 174:b96e65c34a4d
This updates the lib to the mbed lib v 152
Who changed what in which revision?
User | Revision | Line number | New contents of line |
---|---|---|---|
AnnaBridge | 174:b96e65c34a4d | 1 | /**************************************************************************//** |
AnnaBridge | 174:b96e65c34a4d | 2 | * @file sys.c |
AnnaBridge | 174:b96e65c34a4d | 3 | * @version V1.00 |
AnnaBridge | 174:b96e65c34a4d | 4 | * $Revision: 8 $ |
AnnaBridge | 174:b96e65c34a4d | 5 | * $Date: 15/06/17 4:49p $ |
AnnaBridge | 174:b96e65c34a4d | 6 | * @brief NANO100 series SYS driver source file |
AnnaBridge | 174:b96e65c34a4d | 7 | * |
AnnaBridge | 174:b96e65c34a4d | 8 | * @note |
AnnaBridge | 174:b96e65c34a4d | 9 | * Copyright (C) 2013 Nuvoton Technology Corp. All rights reserved. |
AnnaBridge | 174:b96e65c34a4d | 10 | *****************************************************************************/ |
AnnaBridge | 174:b96e65c34a4d | 11 | |
AnnaBridge | 174:b96e65c34a4d | 12 | #include "Nano100Series.h" |
AnnaBridge | 174:b96e65c34a4d | 13 | /** @addtogroup NANO100_Device_Driver NANO100 Device Driver |
AnnaBridge | 174:b96e65c34a4d | 14 | @{ |
AnnaBridge | 174:b96e65c34a4d | 15 | */ |
AnnaBridge | 174:b96e65c34a4d | 16 | |
AnnaBridge | 174:b96e65c34a4d | 17 | /** @addtogroup NANO100_SYS_Driver SYS Driver |
AnnaBridge | 174:b96e65c34a4d | 18 | @{ |
AnnaBridge | 174:b96e65c34a4d | 19 | */ |
AnnaBridge | 174:b96e65c34a4d | 20 | |
AnnaBridge | 174:b96e65c34a4d | 21 | |
AnnaBridge | 174:b96e65c34a4d | 22 | /** @addtogroup NANO100_SYS_EXPORTED_FUNCTIONS SYS Exported Functions |
AnnaBridge | 174:b96e65c34a4d | 23 | @{ |
AnnaBridge | 174:b96e65c34a4d | 24 | */ |
AnnaBridge | 174:b96e65c34a4d | 25 | |
AnnaBridge | 174:b96e65c34a4d | 26 | /** |
AnnaBridge | 174:b96e65c34a4d | 27 | * @brief This function clear the selected system reset source |
AnnaBridge | 174:b96e65c34a4d | 28 | * @param[in] u32Src is system reset source |
AnnaBridge | 174:b96e65c34a4d | 29 | * @return None |
AnnaBridge | 174:b96e65c34a4d | 30 | */ |
AnnaBridge | 174:b96e65c34a4d | 31 | void SYS_ClearResetSrc(uint32_t u32Src) |
AnnaBridge | 174:b96e65c34a4d | 32 | { |
AnnaBridge | 174:b96e65c34a4d | 33 | SYS->RST_SRC |= u32Src; |
AnnaBridge | 174:b96e65c34a4d | 34 | } |
AnnaBridge | 174:b96e65c34a4d | 35 | |
AnnaBridge | 174:b96e65c34a4d | 36 | /** |
AnnaBridge | 174:b96e65c34a4d | 37 | * @brief This function get Brown-out detector output status |
AnnaBridge | 174:b96e65c34a4d | 38 | * @param None |
AnnaBridge | 174:b96e65c34a4d | 39 | * @return 0: System voltage is higher than BOD_VL setting or BOD_EN is 0. |
AnnaBridge | 174:b96e65c34a4d | 40 | * 1: System voltage is lower than BOD_VL setting. |
AnnaBridge | 174:b96e65c34a4d | 41 | * Note : If the BOD_EN is 0, this function always return 0. |
AnnaBridge | 174:b96e65c34a4d | 42 | */ |
AnnaBridge | 174:b96e65c34a4d | 43 | uint32_t SYS_GetBODStatus() |
AnnaBridge | 174:b96e65c34a4d | 44 | { |
AnnaBridge | 174:b96e65c34a4d | 45 | return (SYS->BODSTS); |
AnnaBridge | 174:b96e65c34a4d | 46 | } |
AnnaBridge | 174:b96e65c34a4d | 47 | |
AnnaBridge | 174:b96e65c34a4d | 48 | /** |
AnnaBridge | 174:b96e65c34a4d | 49 | * @brief This function get the system reset source register value |
AnnaBridge | 174:b96e65c34a4d | 50 | * @param None |
AnnaBridge | 174:b96e65c34a4d | 51 | * @return Reset source |
AnnaBridge | 174:b96e65c34a4d | 52 | */ |
AnnaBridge | 174:b96e65c34a4d | 53 | uint32_t SYS_GetResetSrc(void) |
AnnaBridge | 174:b96e65c34a4d | 54 | { |
AnnaBridge | 174:b96e65c34a4d | 55 | return (SYS->RST_SRC); |
AnnaBridge | 174:b96e65c34a4d | 56 | } |
AnnaBridge | 174:b96e65c34a4d | 57 | |
AnnaBridge | 174:b96e65c34a4d | 58 | /** |
AnnaBridge | 174:b96e65c34a4d | 59 | * @brief This function check register write-protection bit setting |
AnnaBridge | 174:b96e65c34a4d | 60 | * @param None |
AnnaBridge | 174:b96e65c34a4d | 61 | * @return 0: Write-protection function is disabled. |
AnnaBridge | 174:b96e65c34a4d | 62 | * 1: Write-protection function is enabled. |
AnnaBridge | 174:b96e65c34a4d | 63 | */ |
AnnaBridge | 174:b96e65c34a4d | 64 | uint32_t SYS_IsRegLocked(void) |
AnnaBridge | 174:b96e65c34a4d | 65 | { |
AnnaBridge | 174:b96e65c34a4d | 66 | return !(SYS->RegLockAddr & SYS_RegLockAddr_RegUnLock_Msk); |
AnnaBridge | 174:b96e65c34a4d | 67 | } |
AnnaBridge | 174:b96e65c34a4d | 68 | |
AnnaBridge | 174:b96e65c34a4d | 69 | /** |
AnnaBridge | 174:b96e65c34a4d | 70 | * @brief This function get product ID. |
AnnaBridge | 174:b96e65c34a4d | 71 | * @param None |
AnnaBridge | 174:b96e65c34a4d | 72 | * @return Product ID |
AnnaBridge | 174:b96e65c34a4d | 73 | */ |
AnnaBridge | 174:b96e65c34a4d | 74 | uint32_t SYS_ReadPDID(void) |
AnnaBridge | 174:b96e65c34a4d | 75 | { |
AnnaBridge | 174:b96e65c34a4d | 76 | return SYS->PDID; |
AnnaBridge | 174:b96e65c34a4d | 77 | } |
AnnaBridge | 174:b96e65c34a4d | 78 | |
AnnaBridge | 174:b96e65c34a4d | 79 | /** |
AnnaBridge | 174:b96e65c34a4d | 80 | * @brief This function reset chip. |
AnnaBridge | 174:b96e65c34a4d | 81 | * @param None |
AnnaBridge | 174:b96e65c34a4d | 82 | * @return None |
AnnaBridge | 174:b96e65c34a4d | 83 | */ |
AnnaBridge | 174:b96e65c34a4d | 84 | void SYS_ResetChip(void) |
AnnaBridge | 174:b96e65c34a4d | 85 | { |
AnnaBridge | 174:b96e65c34a4d | 86 | SYS->IPRST_CTL1 |= SYS_IPRST_CTL1_CHIP_RST_Msk; |
AnnaBridge | 174:b96e65c34a4d | 87 | } |
AnnaBridge | 174:b96e65c34a4d | 88 | |
AnnaBridge | 174:b96e65c34a4d | 89 | /** |
AnnaBridge | 174:b96e65c34a4d | 90 | * @brief This function reset CPU. |
AnnaBridge | 174:b96e65c34a4d | 91 | * @param None |
AnnaBridge | 174:b96e65c34a4d | 92 | * @return None |
AnnaBridge | 174:b96e65c34a4d | 93 | */ |
AnnaBridge | 174:b96e65c34a4d | 94 | void SYS_ResetCPU(void) |
AnnaBridge | 174:b96e65c34a4d | 95 | { |
AnnaBridge | 174:b96e65c34a4d | 96 | SYS->IPRST_CTL1 |= SYS_IPRST_CTL1_CPU_RST_Msk; |
AnnaBridge | 174:b96e65c34a4d | 97 | } |
AnnaBridge | 174:b96e65c34a4d | 98 | |
AnnaBridge | 174:b96e65c34a4d | 99 | /** |
AnnaBridge | 174:b96e65c34a4d | 100 | * @brief This function reset selected modules. |
AnnaBridge | 174:b96e65c34a4d | 101 | * @param[in] u32ModuleIndex is module index. Including : |
AnnaBridge | 174:b96e65c34a4d | 102 | * - \ref CHIP_RST |
AnnaBridge | 174:b96e65c34a4d | 103 | * - \ref CPU_RST |
AnnaBridge | 174:b96e65c34a4d | 104 | * - \ref DMA_RST |
AnnaBridge | 174:b96e65c34a4d | 105 | * - \ref EBI_RST |
AnnaBridge | 174:b96e65c34a4d | 106 | * - \ref SC1_RST |
AnnaBridge | 174:b96e65c34a4d | 107 | * - \ref SC0_RST |
AnnaBridge | 174:b96e65c34a4d | 108 | * - \ref I2S_RST |
AnnaBridge | 174:b96e65c34a4d | 109 | * - \ref ADC_RST |
AnnaBridge | 174:b96e65c34a4d | 110 | * - \ref USBD_RST |
AnnaBridge | 174:b96e65c34a4d | 111 | * - \ref DAC_RST |
AnnaBridge | 174:b96e65c34a4d | 112 | * - \ref PWM1_RST |
AnnaBridge | 174:b96e65c34a4d | 113 | * - \ref PWM0_RST |
AnnaBridge | 174:b96e65c34a4d | 114 | * - \ref UART1_RST |
AnnaBridge | 174:b96e65c34a4d | 115 | * - \ref UART0_RST |
AnnaBridge | 174:b96e65c34a4d | 116 | * - \ref SPI2_RST |
AnnaBridge | 174:b96e65c34a4d | 117 | * - \ref SPI1_RST |
AnnaBridge | 174:b96e65c34a4d | 118 | * - \ref SPI0_RST |
AnnaBridge | 174:b96e65c34a4d | 119 | * - \ref I2C1_RST |
AnnaBridge | 174:b96e65c34a4d | 120 | * - \ref I2C0_RST |
AnnaBridge | 174:b96e65c34a4d | 121 | * - \ref TMR3_RST |
AnnaBridge | 174:b96e65c34a4d | 122 | * - \ref TMR2_RST |
AnnaBridge | 174:b96e65c34a4d | 123 | * - \ref TMR1_RST |
AnnaBridge | 174:b96e65c34a4d | 124 | * - \ref TMR0_RST |
AnnaBridge | 174:b96e65c34a4d | 125 | * - \ref GPIO_RST |
AnnaBridge | 174:b96e65c34a4d | 126 | * @return None |
AnnaBridge | 174:b96e65c34a4d | 127 | */ |
AnnaBridge | 174:b96e65c34a4d | 128 | void SYS_ResetModule(uint32_t u32ModuleIndex) |
AnnaBridge | 174:b96e65c34a4d | 129 | { |
AnnaBridge | 174:b96e65c34a4d | 130 | *(volatile uint32_t *)((uint32_t)&(SYS->IPRST_CTL1) + (u32ModuleIndex>>24)) |= 1<<(u32ModuleIndex & 0x00ffffff); |
AnnaBridge | 174:b96e65c34a4d | 131 | *(volatile uint32_t *)((uint32_t)&(SYS->IPRST_CTL1) + (u32ModuleIndex>>24)) &= ~(1<<(u32ModuleIndex & 0x00ffffff)); |
AnnaBridge | 174:b96e65c34a4d | 132 | } |
AnnaBridge | 174:b96e65c34a4d | 133 | |
AnnaBridge | 174:b96e65c34a4d | 134 | /** |
AnnaBridge | 174:b96e65c34a4d | 135 | * @brief This function configure BOD function. |
AnnaBridge | 174:b96e65c34a4d | 136 | * Configure BOD reset or interrupt mode and set Brown-out voltage level. |
AnnaBridge | 174:b96e65c34a4d | 137 | * Enable Brown-out function |
AnnaBridge | 174:b96e65c34a4d | 138 | * @param[in] i32Mode is reset or interrupt mode. Including : |
AnnaBridge | 174:b96e65c34a4d | 139 | * - \ref SYS_BODCTL_BOD25_RST_EN_Msk or \ref SYS_BODCTL_BOD25_INT_EN_Msk |
AnnaBridge | 174:b96e65c34a4d | 140 | * - \ref SYS_BODCTL_BOD20_RST_EN_Msk or \ref SYS_BODCTL_BOD20_INT_EN_Msk |
AnnaBridge | 174:b96e65c34a4d | 141 | * - \ref SYS_BODCTL_BOD17_RST_EN_Msk or \ref SYS_BODCTL_BOD17_INT_EN_Msk |
AnnaBridge | 174:b96e65c34a4d | 142 | * @param[in] u32BODLevel is Brown-out voltage level. Including : |
AnnaBridge | 174:b96e65c34a4d | 143 | * - \ref SYS_BODCTL_BOD25_EN_Msk |
AnnaBridge | 174:b96e65c34a4d | 144 | * - \ref SYS_BODCTL_BOD20_EN_Msk |
AnnaBridge | 174:b96e65c34a4d | 145 | * - \ref SYS_BODCTL_BOD17_EN_Msk |
AnnaBridge | 174:b96e65c34a4d | 146 | * |
AnnaBridge | 174:b96e65c34a4d | 147 | * @return None |
AnnaBridge | 174:b96e65c34a4d | 148 | */ |
AnnaBridge | 174:b96e65c34a4d | 149 | void SYS_EnableBOD(int32_t i32Mode, uint32_t u32BODLevel) |
AnnaBridge | 174:b96e65c34a4d | 150 | { |
AnnaBridge | 174:b96e65c34a4d | 151 | SYS->BODCTL = (SYS->BODCTL & ~0xFFF) | (i32Mode | u32BODLevel); |
AnnaBridge | 174:b96e65c34a4d | 152 | } |
AnnaBridge | 174:b96e65c34a4d | 153 | |
AnnaBridge | 174:b96e65c34a4d | 154 | /** |
AnnaBridge | 174:b96e65c34a4d | 155 | * @brief This function disable BOD function. |
AnnaBridge | 174:b96e65c34a4d | 156 | * @param None |
AnnaBridge | 174:b96e65c34a4d | 157 | * @return None |
AnnaBridge | 174:b96e65c34a4d | 158 | */ |
AnnaBridge | 174:b96e65c34a4d | 159 | void SYS_DisableBOD(void) |
AnnaBridge | 174:b96e65c34a4d | 160 | { |
AnnaBridge | 174:b96e65c34a4d | 161 | SYS->BODCTL = SYS->BODCTL & ~(SYS_BODCTL_BOD25_EN_Msk | SYS_BODCTL_BOD20_EN_Msk | SYS_BODCTL_BOD17_EN_Msk); |
AnnaBridge | 174:b96e65c34a4d | 162 | } |
AnnaBridge | 174:b96e65c34a4d | 163 | |
AnnaBridge | 174:b96e65c34a4d | 164 | /** |
AnnaBridge | 174:b96e65c34a4d | 165 | * @brief This function enable HIRC trim function. |
AnnaBridge | 174:b96e65c34a4d | 166 | * @param[in] u32TrimSel is trim frequency selection. Including : |
AnnaBridge | 174:b96e65c34a4d | 167 | * - \ref SYS_IRCTRIMCTL_TRIM_11_0592M |
AnnaBridge | 174:b96e65c34a4d | 168 | * - \ref SYS_IRCTRIMCTL_TRIM_12M |
AnnaBridge | 174:b96e65c34a4d | 169 | * - \ref SYS_IRCTRIMCTL_TRIM_12_288M |
AnnaBridge | 174:b96e65c34a4d | 170 | * @param[in] u32TrimEnInt is HIRC trim interrupt selection. Including : |
AnnaBridge | 174:b96e65c34a4d | 171 | * - \ref SYS_IRCTRIMIEN_FAIL_EN |
AnnaBridge | 174:b96e65c34a4d | 172 | * - \ref SYS_IRCTRIMIEN_32KERR_EN |
AnnaBridge | 174:b96e65c34a4d | 173 | * - \ref SYS_IRCTRIMIEN_DISABLE |
AnnaBridge | 174:b96e65c34a4d | 174 | * @return None |
AnnaBridge | 174:b96e65c34a4d | 175 | */ |
AnnaBridge | 174:b96e65c34a4d | 176 | void SYS_EnableIRCTrim(uint32_t u32TrimSel,uint32_t u32TrimEnInt) |
AnnaBridge | 174:b96e65c34a4d | 177 | { |
AnnaBridge | 174:b96e65c34a4d | 178 | SYS->IRCTRIMIEN = (SYS->IRCTRIMIEN & ~(SYS_IRCTRIMIEN_TRIM_FAIL_IEN_Msk|SYS_IRCTRIMIEN_32K_ERR_IEN_Msk)) | u32TrimEnInt; |
AnnaBridge | 174:b96e65c34a4d | 179 | SYS->IRCTRIMCTL = (SYS->IRCTRIMCTL & ~SYS_IRCTRIMCTL_TRIM_SEL_Msk)|u32TrimSel; |
AnnaBridge | 174:b96e65c34a4d | 180 | } |
AnnaBridge | 174:b96e65c34a4d | 181 | |
AnnaBridge | 174:b96e65c34a4d | 182 | /** |
AnnaBridge | 174:b96e65c34a4d | 183 | * @brief This function disable HIRC trim function. |
AnnaBridge | 174:b96e65c34a4d | 184 | * @param None |
AnnaBridge | 174:b96e65c34a4d | 185 | * @return None |
AnnaBridge | 174:b96e65c34a4d | 186 | */ |
AnnaBridge | 174:b96e65c34a4d | 187 | void SYS_DisableIRCTrim(void) |
AnnaBridge | 174:b96e65c34a4d | 188 | { |
AnnaBridge | 174:b96e65c34a4d | 189 | SYS->IRCTRIMCTL = 0; |
AnnaBridge | 174:b96e65c34a4d | 190 | } |
AnnaBridge | 174:b96e65c34a4d | 191 | |
AnnaBridge | 174:b96e65c34a4d | 192 | /*@}*/ /* end of group NANO100_SYS_EXPORTED_FUNCTIONS */ |
AnnaBridge | 174:b96e65c34a4d | 193 | |
AnnaBridge | 174:b96e65c34a4d | 194 | /*@}*/ /* end of group NANO100_SYS_Driver */ |
AnnaBridge | 174:b96e65c34a4d | 195 | |
AnnaBridge | 174:b96e65c34a4d | 196 | /*@}*/ /* end of group NANO100_Device_Driver */ |
AnnaBridge | 174:b96e65c34a4d | 197 | |
AnnaBridge | 174:b96e65c34a4d | 198 | /*** (C) COPYRIGHT 2013 Nuvoton Technology Corp. ***/ |