Exemple #1
0
/*FUNCTION**********************************************************************
 *
 * Function Name : CCM_GetDivider
 * Description   : Get root clock divider
 *
 *END**************************************************************************/
void CCM_GetRootDivider(CCM_Type * base, uint32_t ccmRoot, uint32_t *pre, uint32_t *post)
{
    assert (pre && post);

    *pre = (CCM_REG(ccmRoot) & CCM_TARGET_ROOT_PRE_PODF_MASK) >> CCM_TARGET_ROOT_PRE_PODF_SHIFT;
    *post = (CCM_REG(ccmRoot) & CCM_TARGET_ROOT_POST_PODF_MASK) >> CCM_TARGET_ROOT_POST_PODF_SHIFT;
}
Exemple #2
0
/*FUNCTION**********************************************************************
 *
 * Function Name : CCM_UpdateRoot
 * Description   : Update clock root in one step, for dynamical clock switching
 *
 *END**************************************************************************/
void CCM_UpdateRoot(CCM_Type * base, uint32_t ccmRoot, uint32_t mux, uint32_t pre, uint32_t post)
{
    assert (pre < 8);
    assert (post < 64);

    CCM_REG(ccmRoot) = (CCM_REG(ccmRoot) &
                        (~(CCM_TARGET_ROOT_MUX_MASK | CCM_TARGET_ROOT_PRE_PODF_MASK | CCM_TARGET_ROOT_POST_PODF_MASK))) |
                       CCM_TARGET_ROOT_MUX(mux) | CCM_TARGET_ROOT_PRE_PODF(pre) | CCM_TARGET_ROOT_POST_PODF(post);
}
Exemple #3
0
/*FUNCTION**********************************************************************
 *
 * Function Name : CCM_SetDivider
 * Description   : Set root clock divider
 *
 *END**************************************************************************/
void CCM_SetRootDivider(CCM_Type * base, uint32_t ccmRoot, uint32_t pre, uint32_t post)
{
    assert (pre < 8);
    assert (post < 64);

    CCM_REG(ccmRoot) = (CCM_REG(ccmRoot) &
                        (~(CCM_TARGET_ROOT_PRE_PODF_MASK | CCM_TARGET_ROOT_POST_PODF_MASK))) |
                       CCM_TARGET_ROOT_PRE_PODF(pre) | CCM_TARGET_ROOT_POST_PODF(post);
}