最近在做stm32的雲端專案中遇到個問題:相同**換了一塊實驗板之後串列埠輸出全是亂碼,最後細細一想後發現是兩塊是實驗板所用的外部晶振頻率不一樣。修改之後,問題解決。
接下來演示一下修改工程的方法。
修改(stm32f10x.h)檔案中的外部時鐘頻率
可以用快捷鍵ctrl+g數入119跳轉到此行
//修改為自己開發板所用的外部晶振頻率
#define hse_value ((uint32_t)12000000)
然後修改(system_stmf10x.h)檔案中的倍頻係數
可以用快捷鍵ctrl+g數入1056跳轉到此行
//指標處修改為rcc_cfgr_pllmull6
#else
/* pll configuration: pllclk = hse * 9 = 72 mhz */
rcc->cfgr &
=(uint32_t)
((uint32_t)
~(rcc_cfgr_pllsrc | rcc_cfgr_pllxtpre |
rcc_cfgr_pllmull));
rcc->cfgr |
=(uint32_t)
(rcc_cfgr_pllsrc_hse | rcc_cfgr_pllmull6)
;#endif
這樣就解決了換開發板之後串列埠輸出亂碼的問題。
STM32串列埠輸出亂碼
原因一 初始化串列埠的波特率與串列埠除錯助手不一致。原因二 晶震不一致。串列埠輸出始終亂碼,外部時鐘頻率配置錯誤導致的,庫使用預設8mhz晶震,可以通過巨集使用25mhz晶震。具體定義在stm32f10x.h 文件中 開發板晶震使用的12mhz晶震,定義乙個巨集修改成12000000,編譯,燒寫。i...
STM32串列埠亂碼
前言 今天用最小系統,需要串列埠的除錯,然後就死活不對,一直是亂碼,看hex的話一直是出現0a 0a 0a 0a 0a 0a 0a 0a 0a在迴圈 問題分析並解決 問題切記rxd埠如果出現問題,建議先將rxd埠設定成 gpio mode ipu 上拉輸入 雖然手冊寫著浮空輸入或帶上拉輸入都可以,建...
stm32串列埠輸出
stm32開發板上是如何實現串列埠通訊的,我以實現printf重定向為例來進行分析 先看 main.c include printf.h int main printf.c include printf.h include stm32f10x.h include stm32f10x rcc.h in...