53 void CLK_EnableCKO(uint32_t u32ClkSrc, uint32_t u32ClkDiv, uint32_t u32ClkDivBy1En)
74 uint32_t u32HIRCTRIMCTL;
77 SCB->SCR |= SCB_SCR_SLEEPDEEP_Msk;
83 u32HIRCTRIMCTL =
SYS->IRCTCTL;
92 SYS->IRCTCTL = u32HIRCTRIMCTL;
105 SCB->SCR &= ~SCB_SCR_SLEEPDEEP_Msk;
310 if(u32HIRCSTB == 0UL)
355 if(u32HIRCSTB == 0UL)
505 uint32_t u32sel = 0U, u32div = 0U;
514 u32div = (uint32_t)&
CLK->CLKDIV2;
518 u32div = (uint32_t)&
CLK->CLKDIV2;
522 u32div = (uint32_t)&
CLK->CLKDIV3;
526 u32div = (uint32_t)&
CLK->CLKDIV4;
538 u32div = (uint32_t)&
CLK->CLKDIV3;
542 u32div = (uint32_t)&
CLK->CLKDIV4;
594 CLK->PWRCTL |= u32ClkMask;
610 CLK->PWRCTL &= ~u32ClkMask;
687 uint32_t u32tmpVal = 0UL, u32tmpAddr = 0UL;
690 u32tmpAddr = (uint32_t)&
CLK->AHBCLK;
693 *(
volatile uint32_t *)u32tmpAddr |= u32tmpVal;
770 uint32_t u32tmpVal = 0UL, u32tmpAddr = 0UL;
773 u32tmpAddr = (uint32_t)&
CLK->AHBCLK;
776 *(uint32_t *)u32tmpAddr &= u32tmpVal;
792 uint32_t u32PllSrcClk, u32NR, u32NF, u32NO, u32CLK_SRC, u32PllClk;
793 uint32_t u32Tmp, u32Tmp2, u32Tmp3, u32Min, u32MinNF, u32MinNR, u32MinNO, u32basFreq;
809 u32PllSrcClk =
__HXT;
836 u32Min = (uint32_t) - 1;
840 u32basFreq = u32PllFreq;
842 for(u32NO = 1UL; u32NO <= 4UL; u32NO++)
855 u32PllFreq = u32basFreq << 2;
857 else if(u32NO == 2UL)
859 u32PllFreq = u32basFreq << 1;
865 for(u32NR = 2UL; u32NR <= 32UL; u32NR++)
873 u32Tmp = u32PllSrcClk / u32NR;
874 if((u32Tmp >= 4000000UL) && (u32Tmp <= 8000000UL))
876 for(u32NF = 2UL; u32NF <= 513UL; u32NF++)
879 u32Tmp2 = (((u32Tmp * 2UL) >> 2) * u32NF);
883 u32Tmp3 = (u32Tmp2 > (u32PllFreq>>2)) ? u32Tmp2 - (u32PllFreq>>2) : (u32PllFreq>>2) - u32Tmp2;
905 CLK->PLLCTL = u32CLK_SRC | ((u32MinNO - 1UL) << 14) | ((u32MinNR - 1UL) << 9) | (u32MinNF - 2UL);
911 u32PllClk = u32PllSrcClk / (u32MinNO * (u32MinNR)) * (u32MinNF) * 2UL;
963 int32_t i32TimeOutCnt = 2160000;
964 uint32_t u32Ret = 1U;
966 while((
CLK->STATUS & u32ClkMask) != u32ClkMask)
968 if(i32TimeOutCnt-- <= 0)
999 SysTick->CTRL |= SysTick_CTRL_CLKSOURCE_Msk;
1007 SysTick->LOAD = u32Count;
1013 SysTick->CTRL |= SysTick_CTRL_TICKINT_Msk | SysTick_CTRL_ENABLE_Msk;
1025 SysTick->CTRL = 0UL;
1101 uint32_t u32Pin1, u32Pin2, u32Pin3, u32Pin4;
1148 return (
CLK->PMUSTS);
1167 void CLK_EnableSPDWKPin(uint32_t u32Port, uint32_t u32Pin, uint32_t u32TriggerType, uint32_t u32DebounceEn)
1169 uint32_t u32tmpAddr = 0UL;
1170 uint32_t u32tmpVal = 0UL;
1173 u32tmpAddr = (uint32_t)&
CLK->PASWKCTL;
1174 u32tmpAddr += (0x4UL * u32Port);
1176 u32tmpVal =
inpw((uint32_t *)u32tmpAddr);
1179 outpw((uint32_t *)u32tmpAddr, u32tmpVal);
1190 uint32_t u32PllFreq = 0UL, u32PllReg;
1191 uint32_t u32FIN, u32NF, u32NR, u32NO;
1192 uint8_t au8NoTbl[4] = {1U, 2U, 2U, 4U};
1194 u32PllReg =
CLK->PLLCTL;
1211 u32PllFreq = u32FIN;
1229 u32PllFreq = (((u32FIN >> 2) * u32NF) / (u32NR * u32NO) << 2) * 2UL;
1276 uint32_t u32sel = 0;
1277 uint32_t u32SelTbl[4] = {0x0, 0x4, 0x8, 0xC};
1291 u32sel = (uint32_t)&
CLK->CLKSEL0 + (u32SelTbl[
MODULE_CLKSEL(u32ModuleIdx)]);
1325 uint32_t u32div = 0;
1326 uint32_t u32DivTbl[4] = {0x0, 0x4, 0xc, 0x10};
1331 u32div = (uint32_t)&
CLK->CLKDIV0 + (u32DivTbl[
MODULE_CLKDIV(u32ModuleIdx)]);
1335 u32div = (uint32_t)&
CLK->CLKDIV2;
1337 u32div = (uint32_t)&
CLK->CLKDIV2;
#define CLK_PASWKCTL_WKPSEL_Msk
#define CLK_PASWKCTL_DBEN_Msk
#define CLK_PCLKDIV_APB1DIV_Msk
#define CLK_CLKSEL2_BPWM1SEL_Msk
#define M32(addr)
Get a 32-bit unsigned value from specified address.
#define CLK_PLLCTL_192MHz_HXT
#define CLK_CLKOCTL_CLKOEN_Msk
#define CLK_CLKSEL0_HCLKSEL_PLL
void CLK_EnableCKO(uint32_t u32ClkSrc, uint32_t u32ClkDiv, uint32_t u32ClkDivBy1En)
This function enable clock divider output module clock, enable clock divider output function and set ...
#define CLK_PMUCTL_PDMSEL_Msk
#define CLK_PMUCTL_SRETSEL_Msk
#define CLK_CLKSEL0_STCLKSEL_Msk
#define CLK_CLKSEL2_BPWM0SEL_Pos
#define CLK_CLKSEL0_HCLKSEL_HIRC
#define CLK_PCLKDIV_APB0DIV_DIV4
#define CLK_PMUCTL_WKPINEN4_Pos
#define CLK_SPDSRETSEL_16K
#define CLK_PMUCTL_WKPINEN4_Msk
#define CLK_CLKOCTL_DIV1EN_Pos
uint32_t CLK_GetModuleClockSource(uint32_t u32ModuleIdx)
Get selected module clock source.
#define CLK_CLKSEL2_BPWM0SEL_Msk
#define MODULE_CLKSEL_Msk(x)
#define CLK_PCLKDIV_APB0DIV_Msk
#define CLK_CLKSEL2_EPWM1SEL_Msk
#define SYS_IRCTCTL_FREQSEL_Msk
#define CLK_PCLKDIV_APB0DIV_DIV16
#define CLK_PLLCTL_OUTDIV_Msk
NuMicro peripheral access layer header file.
#define CLK_PLLCTL_INDIV_Msk
#define CLK_PLLCTL_OUTDIV_Pos
#define SYS_CSERVER_VERSION_Msk
#define CLK_SPDWKPIN_ENABLE
#define CLK_PLLCTL_FBDIV_Msk
void CLK_DisableCKO(void)
Disable clock divider output function.
#define CLK_PMUCTL_WKPINEN_Msk
#define CLK_PLLCTL_INDIV_Pos
#define CLK_STATUS_HIRCSTB_Msk
#define CLK_PCLKDIV_APB0DIV_DIV1
void CLK_Idle(void)
Enter to Idle mode.
void CLK_EnableSPDWKPin(uint32_t u32Port, uint32_t u32Pin, uint32_t u32TriggerType, uint32_t u32DebounceEn)
Set specified GPIO as wake up source at Stand-by Power down mode.
#define CLK_PCLKDIV_APB1DIV_DIV4
#define CLK_PCLKDIV_APB1DIV_DIV1
#define CLK_PWRCTL_HIRCEN_Msk
uint32_t CLK_SetCoreClock(uint32_t u32Hclk)
Set HCLK frequency.
#define CLK_PMUCTL_WKPINEN1_Msk
uint32_t CLK_GetPCLK1Freq(void)
Get PCLK1 frequency.
#define CLK_PLLCTL_PLLSRC_HXT
void CLK_DisableXtalRC(uint32_t u32ClkMask)
Disable clock source.
#define CLK_PMUCTL_WKPINEN3_Pos
#define CLK_CLKSEL0_STCLKSEL_HCLK
uint32_t CLK_GetPCLK0Freq(void)
Get PCLK0 frequency.
uint32_t CLK_GetModuleClockDivider(uint32_t u32ModuleIdx)
Get selected module clock divider number.
#define CLK_PLLCTL_FBDIV_Pos
#define CLK_STATUS_LIRCSTB_Msk
#define CLK_PWRCTL_LXTEN_Msk
#define CLK_SPDSRETSEL_NO
#define CLK_CLKSEL0_HCLKSEL_Msk
#define CLK_PCLKDIV_APB1DIV_DIV8
uint32_t CLK_GetPMUWKSrc(void)
Get power manager wake up source.
#define CLK_CLKSEL2_EPWM1SEL_Pos
uint32_t CLK_GetPLLClockFreq(void)
Get PLL clock frequency.
#define CLK_PLLCTL_PD_Msk
#define CLK_CLKSEL2_BPWM1SEL_Pos
void CLK_EnableDPDWKPin(uint32_t u32TriggerType)
Set Wake-up pin trigger type at Deep Power down mode.
void CLK_SetModuleClock(uint32_t u32ModuleIdx, uint32_t u32ClkSrc, uint32_t u32ClkDiv)
This function set selected module clock source and module clock divider.
void CLK_PowerDown(void)
Enter to Power-down mode.
#define CLK_PLLCTL_PLLSRC_HIRC
uint32_t CLK_GetCPUFreq(void)
Get CPU frequency.
#define CLK_PCLKDIV_APB0DIV_DIV8
#define CLK_PMUCTL_PDMSEL_SPD1
#define CLK_PLLCTL_OE_Msk
#define MODULE_IP_EN_Pos(x)
void CLK_DisableModuleClock(uint32_t u32ModuleIdx)
Disable module clock.
void CLK_SetPowerDownMode(uint32_t u32PDMode)
Power-down mode selected.
#define inpw(port)
Get a 32-bit unsigned value from specified I/O port.
void CLK_SetHCLK(uint32_t u32ClkSrc, uint32_t u32ClkDiv)
This function set HCLK clock source and HCLK clock divider.
void CLK_EnableSysTick(uint32_t u32ClkSrc, uint32_t u32Count)
Enable System Tick counter.
void SystemCoreClockUpdate(void)
Updates the SystemCoreClock with current core Clock retrieved from cpu registers.
#define MODULE_CLKDIV_Pos(x)
#define CLK_CLKDIV0_HCLK(x)
void CLK_EnableModuleClock(uint32_t u32ModuleIdx)
Enable module clock.
#define CLK_PCLKDIV_APB0DIV_DIV2
#define MODULE_CLKDIV_Msk(x)
#define CLK_PCLKDIV_APB1DIV_DIV2
#define CLK_PWRCTL_PDEN_Msk
#define CLK_PMUCTL_WKPINEN3_Msk
#define CLK_PMUCTL_PDMSEL_SPD0
#define CLK_PLLCTL_192MHz_HIRC
#define CLK_STATUS_HXTSTB_Msk
#define CLK_PASWKCTL_PFWKEN_Msk
#define CLK_CLKSEL2_EPWM0SEL_Msk
void CLK_DisablePLL(void)
Disable PLL.
uint32_t CLK_GetHCLKFreq(void)
Get HCLK frequency.
void CLK_DisableSysTick(void)
Disable System Tick counter.
#define MODULE_IP_EN_Pos_ENC(x)
#define CLK_CLKSEL2_EPWM0SEL_Pos
#define outpw(port, value)
Set a 32-bit unsigned value to specified I/O port.
#define CLK_PASWKCTL_PRWKEN_Msk
#define CLK_PLLCTL_BP_Msk
#define CLK_PMUCTL_WKPINEN2_Pos
#define MODULE_CLKSEL_Pos(x)
#define CLK_PMUCTL_WKPINEN2_Msk
#define CLK_PASWKCTL_WKEN_Msk
uint32_t CLK_GetLXTFreq(void)
Get external low speed crystal clock frequency.
#define CLK_PWRCTL_HXTEN_Msk
void CLK_EnableXtalRC(uint32_t u32ClkMask)
Enable clock source.
#define CLK_CLKDIV0_HCLKDIV_Msk
void CLK_SetSysTickClockSrc(uint32_t u32ClkSrc)
Set SysTick clock source.
#define CLK_PCLKDIV_APB1DIV_DIV16
uint32_t CLK_WaitClockReady(uint32_t u32ClkMask)
This function check selected clock source status.
uint32_t CLK_EnablePLL(uint32_t u32PllClkSrc, uint32_t u32PllFreq)
Set PLL frequency.
#define CLK_PWRCTL_LIRCEN_Msk
#define CLK_PMUCTL_WKPINEN1_Pos
#define CLK_PASWKCTL_WKPSEL_Pos
uint32_t CLK_GetHXTFreq(void)
Get external high speed crystal clock frequency.
#define CLK_STATUS_PLLSTB_Msk