
本帖最后由 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官方关于固件库的说明,及时修改相关参数,才能避免多走弯路。 |
NUCLEO-H723ZG开发板试用 ——串口点灯测试
OpenBLT移植到STM32F103战舰开发板上适用于所有STM32F103系列的Bootloader
MultiButton移植到STM32F103战舰开发板
汇编浮点库qfplib移植STM32F769I-DISCO开发板与硬件浮点运算性能测试对比
【STM32MP157】从ST官方例程中分析RPMsg-TTY/SDB核间通信的使用方法
S2LP 的 sniff 模式如何同时满足通讯和低功耗要求
双证齐发!移远通信通过ISO 26262功能安全流程认证及产品认证
意法半导体 STHV200超声波 IC单片简化设计
了解NFC技术优势与应用场景
基于STM32软件实现底层函数经验分享—IIC通信
MARK 谢谢 小白学习了。但自己的回复怎么下次找不到呢?