Author:AXYZdong 自動化專業 工科男
有一點思考,有一點想法,有一點理性!
定個小小目標,努力成為習慣!在最美的年華遇見更好的自己!
CSDN@AXYZdong,CSDN首發,AXYZdong原創
唯一部落格更新的地址為: 👉 AXYZdong的部落格 👈
- 開發板:stm32f407VET6
- 開發環境:keil5 MDK
問題解決
最近學習了一下32的串列埠通訊,串列埠設定還是很簡單的,不過後面串列埠偵錯助手上面出現的亂碼
。很讓人頭疼。
當然第一時間去百度尋求解決辦法。
百度搜尋總結:
- 在程式不出現問題的情況下,一定是
外部晶振設定
的問題。但是也要排查下面 👇 兩個問題
串列埠助手的波特率是不是和程式設定的是一樣的
,如果一樣的話出現亂碼,參考下面的解決方法。插播一條反爬蟲資訊,讀者可以忽略:
stm32的串列埠使用的是外部高速時鐘的時鐘源
串列埠外設是掛在APB匯流排上的,一般用於低速外設,它是AHB匯流排時鐘分頻所得。
這樣設計分頻是為了降低低速外設的開關損耗。
然而AHB匯流排的時鐘又源自於高速時鐘源
。高速時鐘源可以是高速內部時鐘、高速外部時鐘、高速內部或外部時鐘PLL倍頻所得。
所以最終串列埠的波特率受高速時鐘的影響。
首先找到自己板子上外部晶振,並確定它的大小。
▲ 博主機板子上晶振是8Mhz
在官方標準庫中,外部時脈頻率設定預設 25MHz 的晶振。
而我們需要將外部時脈頻率設定成適合自己板子的。
找到 stm32f4xx.h
,在 .h 檔案120行左右的地方,預設是這樣的:
/**
* @brief In the following line adjust the value of External High Speed oscillator (HSE)
used in your application
Tip: To avoid modifying this file each time you need to use different HSE, you
can define the HSE value in your toolchain compiler preprocessor.
*/
#if !defined (HSE_VALUE)
#define HSE_VALUE ((uint32_t)25000000) /*!< Value of the External oscillator in Hz */
#endif /* HSE_VALUE */
▲ 預設25Mhz
下面只需定義一下自己開發板的外部時鐘源頻率即可:(加個宏定義
)
/**
* @brief In the following line adjust the value of External High Speed oscillator (HSE)
used in your application
Tip: To avoid modifying this file each time you need to use different HSE, you
can define the HSE value in your toolchain compiler preprocessor.
*/
#define HSE_VALUE ((uint32_t)8000000) // 定義自己開發版上的外部時鐘源頻率
#if !defined (HSE_VALUE)
#define HSE_VALUE ((uint32_t)25000000) /*!< Value of the External oscillator in Hz */
#endif /* HSE_VALUE */
附:如果串列埠助手沒有收到任何東西,請檢查連線 TX
、RX
端子的杜邦線是否鬆動。
對於 stm32 的 F1 和 F4 等系列,如果出現串列埠通訊出現亂碼的問題,都可以嘗試使用上述方法解決。
自己開發板上的外部晶振要了解,如果某一匯流排的時鐘來源於外部時鐘源,自己使用的外設恰好掛靠在該匯流排上,利用官方標準庫,一定要將 stm32f4xx.h
檔案中相關設定加以修改。
【參考文獻】
[1]:https://blog.csdn.net/qq_34179721/article/details/97427395?utm_medium=distribute.pc_relevant.none-task-blog-baidujs-2
本次的分享就到這裡
好書不厭百回讀,熟讀自知其中意。將學習成為習慣,用知識改變命運,用部落格見證成長,用行動證明努力。
如果我的部落格對你有幫助、如果你喜歡我的部落格內容,請 「點贊」 「評論」 「收藏」
一鍵三連哦!
聽說 👉 點贊 👈 的人運氣不會太差,每一天都會元氣滿滿呦!^ _ ^ ❤️ ❤️ ❤️
碼字不易,大家的支援就是我堅持下去的動力。點贊後不要忘了👉關注👈我哦!
更多精彩內容請前往 AXYZdong的部落格
如果以上內容有任何錯誤或者不準確的地方,歡迎在下面👇留個言。或者你有更好的想法,歡迎一起交流學習~~~