|
本帖最后由 wenyangzeng 于 2017-12-2 22:00 编辑 STM32F407VG使用固件库进行串行通讯波特率出错故障的排除 芯片型号: STM32F407VG,与上位机串口通讯交换数据: 系统时钟:外部晶振8MHZ,倍频到168MHZ; 固件库:stm32f4xx_DSP_StdPeriph_Lib_V1.8.0; 在MDK5中运行stm32f4xx_DSP_StdPeriph_Lib_V1.8.0串口通讯,结果发现串口发送和接收数据都是乱码; 故障分析: 打开system.stm32f4xx.c关于时钟配置的说明:
HSE Frequency(Hz) : 使用外部25MHZ晶振; System Clock source: PLL (HSE), SYSCLK : 168MHZ. PLL_M :25 PLL_N :336 PLL_P :2 PLL_Q :7 由于实际使用的晶振为8MHZ,按照默认的时钟配置当然无法得到正确的波特率,从而导致串口通讯失败。 解决方法: 借助STM32CubeMX,可以方便地配置系统时钟:
根据上图配置系统时钟所需正确参数: M=4 ( PLL_M) N=168 (PLL_N) P=2 (PLL_P) Q=4 (PLL_Q) 接下来修改相关文件: 1、在stm32f4xx.h的70行定义芯片型号:
2、在stm32f4xx.h的144行定义晶振频率
3、在system_stm32f4xx.c中修改 371行
384行
401行
经过以上修改,编译运行,串口通讯工作正常。 总结:在使用ST传统固件库开发产品过程中,当目标板使用与ST固件库默认值不同的外部晶振时,不能一味拿来就用。应该认真阅读ST官方关于固件库的说明,及时修改相关参数,才能避免多走弯路。 |
不错!!!![]() ![]() |
| 谢谢大佬分享啦 |
![]() ![]() ![]() |
STM32
超强工具——STM32CubeMX 你会用吗?
集结出发! STM32全国研讨会系列之一:ST智能门铃中国首秀
关于STM32启动文件的几个小问题
【银杏科技ARM+FPGA双核心应用】STM32H7系列35——USB_VCP_FS
【银杏科技ARM+FPGA双核心应用】STM32H7系列28——USB_HID
粉丝分享 | 图说CRC原理应用及STM32硬件CRC外设
STM32L151进入低功耗,并由RTC唤醒的故事
[转]stm32控制NFC模块(PN532)源码(P2P,模拟卡,读写卡等
STM32G070RB+LVGL移植
微信公众号
手机版