コード例 #1
0
ファイル: I2S.c プロジェクト: Moonhint/Smart-Lock-Prototype
/*---------------------------------------------------------------------------------------------------------*/
uint32_t DrvI2S_GetSourceClockFreq(void)
{
    uint8_t  u8ClkSrcSel;
    uint32_t u32Freq = __XTAL;
     
    
    u8ClkSrcSel = SYSCLK->CLKSEL2.I2S_S;

    switch (u8ClkSrcSel)
    {
        case DRVI2S_EXT_12M:
            u32Freq = __XTAL;
            break;
        case DRVI2S_PLL:
            u32Freq = DrvSYS_GetPLLClockFreq();  
            break;
        case DRVI2S_HCLK:
            u32Freq = SystemCoreClock;
            break; 
        case DRVI2S_INTERNAL_22M:
            u32Freq = __IRC22M;
            break;
    }

    return u32Freq;
}
コード例 #2
0
/*----------------------------------------------------------------------------
  Clock functions
  This function is used to update the variable SystemCoreClock 
  and must be called whenever the core clock is changed.
 *----------------------------------------------------------------------------*/
void SystemCoreClockUpdate (void)            /* Get Core Clock Frequency      */
{
    uint32_t u32Freq, u32ClkSrc;
    uint32_t u32HclkDiv;

    /* Update PLL Clock */
    PllClock = DrvSYS_GetPLLClockFreq();
 
    u32ClkSrc = SYSCLK->CLKSEL0 & SYSCLK_CLKSEL0_HCLK_S_Msk;

    if(u32ClkSrc != SYSCLK_CLKSEL0_HCLK_PLL)
    {
        /* Use the clock sources directly */
        u32Freq = gau32ClkSrcTbl[u32ClkSrc];
    }
    else
    {
        /* Use PLL clock */
        u32Freq = PllClock;
    }
 
    u32HclkDiv = (SYSCLK->CLKDIV & SYSCLK_CLKDIV_HCLK_N_Msk) + 1; 
    
    /* Update System Core Clock */
    SystemCoreClock = u32Freq/u32HclkDiv;

    CyclesPerUs = (SystemCoreClock + 500000) / 1000000;
}
コード例 #3
0
ファイル: DrvUART.c プロジェクト: he992790757/C16
/*---------------------------------------------------------------------------------------------------------*/
static uint32_t GetUartClk(void)
{
	uint32_t clk =0 , div;
													/* Check UART Clock Source Setting */
	if(SYSCLK->CLKSEL1.UART_S == 0)			
	{
		clk = DrvSYS_GetExtClockFreq();			/* Get External Clock From DrvSYS Setting */
	}
	else if(SYSCLK->CLKSEL1.UART_S == 1)
	{
	 	div = SYSCLK->CLKDIV.UART_N;				/* According PLL Clock and UART_Divider to get clock */
	
		clk = DrvSYS_GetPLLClockFreq()/ (div+1);
	}
	else
		clk = __IRC22M;								/* Clock 22Mhz  */

	return clk;
}