コード例 #1
0
ファイル: pmc.c プロジェクト: EthACKdotOrg/FreeRTOS-8.0.1
/**
 * \brief Enable PLLB clock.
 *
 * \param mulb PLLB multiplier.
 * \param pllbcount PLLB counter.
 * \param divb Divider.
 */
void pmc_enable_pllbck(uint32_t mulb, uint32_t pllbcount, uint32_t divb)
{
    pmc_disable_pllbck(); // Hardware BUG FIX : first disable the PLL to unlock the lock!
    // It occurs when re-enabling the PLL with the same parameters.
    PMC->CKGR_PLLBR =
        CKGR_PLLBR_DIVB(divb) | CKGR_PLLBR_PLLBCOUNT(pllbcount)
        | CKGR_PLLBR_MULB(mulb);
    while ((PMC->PMC_SR & PMC_SR_LOCKB) == 0);
}
コード例 #2
0
ファイル: pmc.c プロジェクト: peterliu2/FreeRTOS
/**
 * \brief Enable PLLB clock.
 *
 * \param mulb PLLB multiplier.
 * \param pllbcount PLLB counter.
 * \param divb Divider.
 */
void pmc_enable_pllbck(uint32_t mulb, uint32_t pllbcount, uint32_t divb)
{
    /* first disable the PLL to unlock the lock!*/
    pmc_disable_pllbck();

    PMC->CKGR_PLLBR =
        CKGR_PLLBR_DIVB(divb) | CKGR_PLLBR_PLLBCOUNT(pllbcount)
        | CKGR_PLLBR_MULB(mulb);
    while ((PMC->PMC_SR & PMC_SR_LOCKB) == 0);
}
コード例 #3
0
ファイル: pmc.c プロジェクト: AlexShiLucky/freertos
/**
 * \brief Enable PLLB clock.
 *
 * \param mulb PLLB multiplier.
 * \param pllbcount PLLB counter.
 * \param divb Divider.
 */
void pmc_enable_pllbck(uint32_t mulb, uint32_t pllbcount, uint32_t divb)
{
	/* first disable the PLL to unlock the lock */
	pmc_disable_pllbck();

#if SAMG55
	PMC->CKGR_PLLAR = CKGR_PLLAR_PLLAEN(divb) |
		CKGR_PLLAR_PLLACOUNT(pllbcount) | CKGR_PLLAR_MULA(mulb);
#else
	PMC->CKGR_PLLBR =
			CKGR_PLLBR_DIVB(divb) | CKGR_PLLBR_PLLBCOUNT(pllbcount)
			| CKGR_PLLBR_MULB(mulb);
#endif
	while ((PMC->PMC_SR & PMC_SR_LOCKB) == 0);
}