STM32F407ZG微控制器晶振由例程預設推薦的8M換為自定義的4-26M時的注意事項
阿新 • • 發佈:2018-11-29
相信作為一名STM32新手,大家都是從官網上下載例程來學習。現在firmwave的最新版本為1.1.0,下載地址為
http://www.st.com/stonline/stappl/resourceSelector/app?page=resourceSelector&doctype=FIRMWARE&SubClassID=1521
在這個例程裡面,預設用到的是8M的外部晶振,現在就有一個問題,如果外部晶振不是8M,而是其他比如16M時,我們應該修改哪些地方才能讓程式正常執行呢。
以下由8M換為16M為例。
修改的地方之一:stm32f4xx_conf.h裡面的HSE_VALUE,系統預設採用外部8M晶振,所以 #define HSE_VALUE ((uint32_t)8000000) ,現把它修改為 #define HSE_VALUE ((uint32_t)16000000)
修改的地方之二:系統通過PLL倍頻到168M,所以在配置PLL的時候,也需要作相應的修改。在system_stm32f4xx.c裡,預設的配置為以下:
[cpp] view plain copy
- /* PLL_VCO = (HSE_VALUE or HSI_VALUE / PLL_M) * PLL_N */
- #define PLL_M 8
- #define PLL_N 336
- /* SYSCLK = PLL_VCO / PLL_P */
- #define PLL_P 2
- /* USB OTG FS, SDIO and RNG Clock = PLL_VCO / PLLQ */
- #define PLL_Q 7
需要把PLL_M修改為16,不然會超頻到336M的主頻,使STM32不能正常工作,常見表現為掉進HardFault_Handler()中。