Example #1
0
/**
  * @brief  Get current HCLK clock frequency.
  * @param  None.
  * @return HCLK clock frequency. The clock UNIT is in Hz.
  */
uint32_t SysGet_HCLKFreq(void)
{

    uint32_t u32Freqout, u32AHBDivider, u32ClkSel;

    u32ClkSel = CLK->CLKSEL0 & CLK_CLKSEL0_HCLK_S_Msk;

    if (u32ClkSel == CLK_CLKSEL0_HCLK_S_HXT) {  /* external HXT crystal clock */
        u32Freqout = __HXT;
    } else if(u32ClkSel == CLK_CLKSEL0_HCLK_S_LXT) {    /* external LXT crystal clock */
        u32Freqout = __LXT;
    } else if(u32ClkSel == CLK_CLKSEL0_HCLK_S_PLL) {    /* PLL clock */
        u32Freqout = SysGet_PLLClockFreq();
    } else if(u32ClkSel == CLK_CLKSEL0_HCLK_S_LIRC) { /* internal LIRC oscillator clock */
        u32Freqout = __LIRC;
    } else {                                /* internal HIRC oscillator clock */
        if((CLK->PWRCTL & CLK_PWRCTL_HIRC_FSEL_Msk) == CLK_PWRCTL_HIRC_FSEL_Msk)
            u32Freqout = __HIRC16M;
        else
            u32Freqout = __HIRC12M;

    }
    u32AHBDivider = (CLK->CLKDIV0 & CLK_CLKDIV0_HCLK_N_Msk) + 1 ;

    return (u32Freqout/u32AHBDivider);
}
Example #2
0
/**
  * @brief  Get current HCLK clock frquency. 
  * @param  None.
  * @return HCLK clock frquency. The clock UNIT is in Hz.
  */
uint32_t SysGet_HCLKFreq(void)
{
	
	uint32_t u32Freqout, u32AHBDivider, u32ClkSel;

	u32ClkSel = CLK->CLKSEL0 & CLK_CLKSEL0_HCLK_MASK;

	if (u32ClkSel == CLK_CLKSEL0_HCLK_HXT)	/* external HXT crystal clock */
	{
		u32Freqout = __XTAL;	
	}
	else if(u32ClkSel == CLK_CLKSEL0_HCLK_LXT)		/* external LXT crystal clock */ 
	{
		u32Freqout = __RTC_XTAL;
	}
	else if(u32ClkSel == CLK_CLKSEL0_HCLK_PLL)		/* PLL clock */
	{
		u32Freqout = SysGet_PLLClockFreq();
	}
	else if(u32ClkSel == CLK_CLKSEL0_HCLK_LIRC)	/* internal LIRC oscillator clock */
	{
	 	u32Freqout = __IRC10K;
	}
	else									/* internal HIRC oscillator clock */
	{
	 	u32Freqout = __IRC12M;
	
	}
	u32AHBDivider = (CLK->CLKDIV0 & CLK_CLKDIV0_HCLK_MASK) + 1 ;
	
	return (u32Freqout/u32AHBDivider);	
}