stm32f103串口通信亂碼問題

本人利用的是中國移動贈送的麒麟開發板,在進行串口通信的實驗時,採用正點原子的代碼,發現會一直出現亂碼的情況。經過兩天時間的排查,最終發現是晶振的問題,麒麟開發板使用的外部晶振是12M的,但是正點原子的代碼使用的是8M的晶振,下面演示修改前後的變化過程。(注意,波特率的設置也需要一樣)

利用串口1需要發送的內容:

串口接收到的信息:

 

修改system_stm32f10x.c文件中的晶振分頻爲6分頻,因爲自己用的麒麟開發板是12M的,12×9 = 108M,需要改成六分頻,12×6 = 72M

現在修改爲六分頻

我們再來看一次現在是不是不亂碼了,發現還是亂碼:

 

接下來修改stm32f10x.h文件中的宏定義,看到默認的是8000000的,我們把它改成我們需要的12000000

 

現在再來看看上位機接收到的數據吧:終於正常啦~

 

心得:在玩stm32這種資源豐富的開發板的時候,一定要注意開發板的晶振和代碼裏設置的晶振是不是一樣的,不然就會出現很多異常的問題

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