現在我有一個stm32f4發現。我爲uart連接stm32f4做一個max232。我用usb-rs232連接max232。我希望我可以通過uart與stm32f4和PC進行通信。我在Linux中打開putty。但是我在設置uart波特率方面遇到了很大的問題。如果我設置相同的波特率,它將無法收到正確的信息。我用示波器觀察。最後,我設置了7680(stm32f4)和3200(膩子)。那麼我可以得到正確的信息。但我不知道爲什麼它可以用不同的波特率工作。誰能告訴我爲什麼?這是我的代碼,thx https://gitcafe.com/ctc8631/stm32f4-test-uartstm32f4 uart波特率設置?
回答
可能你在膩子上使用自動波特率。關閉自動波特率,然後重試。如果仍然有效,apb1/apb2總線頻率可能是錯誤的。您可以通過stm32f4xx_rcc.c編輯總線頻率
我有完全相同的問題。我在我的項目中使用了各種庫和包含文件。它們中的大部分都比ST提供的原始版本更新。這是我「升級」他們的動機,但我是一個很大的錯誤。
我的解決方案/解決方法是:
使用TRUEStudio。製作一個新的Embedded C應用程序。正確設置嚮導(這是明確的,但這是一個關於它的視頻:http://www.youtube.com/watch?v=mT5bAgpW3jU)。它將生成所有必要的文件並且設置好所有的東西(項目結構,調試接口等)。添加你自己的源代碼並修改必要的源代碼,並且USARTx將運行所需的波特率。
我想問題是外設時鐘速度設置錯誤,這就是爲什麼操作速度不匹配。只有我認爲我找不到問題的根源,但如果您使用的是不同的IDE,我建議將電路板特定庫更改爲原始版本。
您可能需要檢查您的時鐘設置。發現板上有一個8MHz晶振,而標準外設庫中的相關配置文件(Libraries/CMSIS/Device/ST/STM32F4xx/Source/Templates/system_stm32f4xx.c)似乎設置爲25Mhz晶振。它有這些定義
#define PLL_M 25
#define PLL_N 336
#define PLL_P 2
#define PLL_Q 7
產生從25MHz的168Mhz而對於發現董事會工作以太網例如發現斷網使用
#define PLL_M 8
#define PLL_N 288
#define PLL_P 2
#define PLL_Q 6
從8MHz的獲得144MHz的。
編輯:原來這樣做是不夠的,因爲stm32f4xx.h將「HSE_VALUE」定義爲25000000(25MHz),除非在包含該文件時已定義它。我查看的正確工作示例因此未定義,並在stm32f4xx_conf.h中將其重新定義爲8000000(8MHz)。但我想正確的做法是在編譯器命令行上定義它(如果使用IDE,則在某些屬性框中)。至少在IAR EWARM中工作得很好。
在文件stm32f4xx.h你需要修復
HSE_VALUE from 25000000 to 8000000
然後在文件system_stm32f4xx.c 設置如下:
/* PLL_VCO = (HSE_VALUE or HSI_VALUE/PLL_M) * PLL_N */
#define PLL_M 8
#define PLL_N 336
/* SYSCLK = PLL_VCO/PLL_P */
#define PLL_P 2
/* USB OTG FS, SDIO and RNG Clock = PLL_VCO/PLLQ */
#define PLL_Q 7
- 1. LPC1788中UART的波特率設置
- 2. 設置UsbDeviceConnection的波特率
- 3. 自動檢測工作設備的UART波特率
- 4. Qt - 設置自定義波特率
- 5. 什麼值設置波特率
- 6. 設置linux串口波特率高於4兆波特
- 7. Xbee波特率配置
- 8. 樹莓pi uart波特率鎖定在9600
- 9. 選擇正確的Arduino與波特率處理UART數據460800
- 10. APQ-8016 Snapdragon 410c:Linaro中的非標準UART波特率
- 11. STM32F4週期波動
- 12. 波特率arduino
- 13. C#:如何確定串口設備可設置的波特率?
- 14. 波特率計算
- 15. 如何獲取設備的波特率?
- 16. 輸入波特率vs輸出波特率
- 17. PIC中斷驅動的UART與高波特率的循環緩衝區
- 18. 無法爲Ubuntu的USB串行端口設置波特率12.04
- 19. LP17XX微控制器的波特率設置
- 20. RS232控制檯通訊 - 設置波特率爲1 MBd的
- 21. 設置撥號連接的波特率win32
- 22. 設置串口的波特率在vxworks上失敗
- 23. 如何在終端設置Mac的波特率
- 24. UBoot波特率參數
- 25. 自定義波特率
- 26. 調整pic24的波特率
- 27. 圖16F913 UART通信設置
- 28. 如何在Linux上設置串口設備上的非標準波特率?
- 29. 在Android上可以實現大於115200波特率的USB波特率嗎?
- 30. 帶有HAL庫的STM32F4-Discovery(STM32F429ZIT6)上的RS232(UART)?