stm32修改系統時鐘經驗

在使用stm32開發的過程中,有時需要手動修改系統時鐘參數,使板子上的晶振和目標系統時鐘匹配。在此記錄一下對時鐘配置代碼的理解。

1.需要修改的文件:system_stm32f0xx.c、stm32f0xx.h

2.system_stm32f0xx.c文件裏面,如果有PLL_VCO = (HSE_VALUE or HSI_VALUE / PLL_M) * PLL_N */這種宏定義參數(例如F4系列),只需要按照公式修改相應參數,

否則需要修改SetSysClock() 函數(例如F0系列):

時鐘初始化時會先清空相應寄存器,然後在SetSysClock函數中進行設置,鎖相環倍頻參數一般比較明顯:

    /* PLL configuration = HSE * 6 = 48 MHz */
    RCC->CFGR &= (uint32_t)((uint32_t)~(RCC_CFGR_PLLSRC | RCC_CFGR_PLLXTPRE | RCC_CFGR_PLLMULL));

    RCC->CFGR |= (uint32_t)(RCC_CFGR_PLLSRC_PREDIV1 | RCC_CFGR_PLLXTPRE_PREDIV1 | RCC_CFGR_PLLMULL6);

但如果要設置分頻參數,可能要自己添加代碼(庫函數可能會用默認參數,不分頻),這時設置CFGR2寄存器時,要注意一個寄存器位:

也就是CFGR寄存器的bit17和PREDIV[0]是同一個位,如果清零CFGR寄存器的bit17,PREDIV[0]也同時被清零;因此如果需要修改分頻參數,建議放在設置PLL倍頻參數之後。

發表評論
所有評論
還沒有人評論,想成為第一個評論的人麼? 請在上方評論欄輸入並且點擊發布.
相關文章