使用開發板的串口通訊例程修改了一個自己板子STM32F407的UART4,發現兩邊收發的數據但是錯誤的;
剛開始懷疑是我的USB轉串口模塊壞了,但在模塊上RX腳直接接TX腳,數據發送和接收是正常,說明USB轉串口模式是沒壞的;然後就懷疑UART4是不是比較特殊,代碼需要其他的特殊配置,在自己板子RX腳也是直接接TX腳,進入調試狀態查看收發數據,發現也是正常的,也查看了手冊和網上資料並沒有提到UART4的特殊性,說明我的代碼配置是沒問題。
最後去看了開發板與我自己板子的電路圖,發現原來是板子的晶振頻率不對,我的板子晶振頻率是8MHz,,開發板晶振頻率是25MHz;
使用標準庫:
在 stm32f4xx.h 中默認是25M的,所以修改了一下該文件(去掉文件的只讀權限後可修改):
1 #if !defined (HSE_VALUE)
2 #define HSE_VALUE ((uint32_t)8000000) /*!< Value of the External oscillator in Hz */ //原來是25000000
3
4 #endif /* HSE_VALUE */
---------------------
使用HAL庫:
在 stm32f4xx_hal_conf.h 中默認是25M的,所以修改了一下該文件
#if !defined (HSE_VALUE)
#define HSE_VALUE (8000000U) /*!< Value of the External oscillator in Hz 默認是25MHz*/
#endif /* HSE_VALUE */