之前小編申請了一個STM32免費的迷你板,調試串口通信時總是弄不好。後來發現大多數stm32採用的是8M的晶振,但是手裡這塊迷你版採用的是12M的晶振,其實STM32支持4—16MHz之內任何頻點的晶振。於是想到了兩個解決方案。第一個是改程序,第二個是換晶振。本著不亂改硬件的原則,決定開始更改程序。
keil 5
經過查資料得知,其實就是把system_stm32f10x.c裡面的時鐘設置改一下就行了,原本8*9=72。12M的晶振72/12=6。但是把響應位置改過了之後並沒有成功。後來查倒stm32f10x.h裡面也有時鐘的設置。再次更改,依舊失敗。最終到處查詢後找到了問題所在——keil自身設置。
keil設置界面
下面我們就通過簡單的三個步驟教大家怎更改外部晶振設置:
第一步,打開stm32f10x.h,將
#define HSE_VALUE ((uint32_t)8000000)
修改為:
#define HSE_VALUE ((uint32_t)12000000)
第二步,打開system_stm32f10x.c,修改PLL參數,將
RCC->CFGR |= (uint32_t)(RCC_CFGR_PLLSRC_HSE | RCC_CFGR_PLLMULL9);
修改為:
RCC->CFGR |= (uint32_t)(RCC_CFGR_PLLSRC_HSE | RCC_CFGR_PLLMULL6);
第三步,打開你已經建立的STM32工程,選擇Projects-〉Options for target ***,找到Target標籤,你會發現,外接的晶振默認還是8MHz,我們將外接的晶振參數修改為12MHz。這樣就完成了晶振頻率的設置。
閱讀更多 電子愛好者 的文章