mbed library sources. Supersedes mbed-src.

Dependents:   Nucleo_Hello_Encoder BLE_iBeaconScan AM1805_DEMO DISCO-F429ZI_ExportTemplate1 ... more

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?

UserRevisionLine numberNew 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. ***/