STM32F4串口数据乱码与定时器定时不准确解决策略
STM32F4串口数据乱码与定时器定时不准确解决策略
·
STM32F4串口数据乱码与定时器定时不准确解决策略
说明
本人为在校学生,在学习过程中,难免有错误之处,望有缘看到的朋友指出,我当感激不尽,也会及时更改。本篇文章,只为做一个简单的记录,作为学习过程中的一点回忆
此类问题,大多出现在自己新建的工程里,如果直接拿别人能用的工程,此类问题基本是不会出现的,除非别人的板子使用的晶振和自己的不同。
在此感谢信盈达欧工的帮助,才让我解决了此类问题。
硬件准备
1. STM32F4核心板
2. ST-Link或J-Link等下载设备
3. 串口转TTL模块
硬件接线
硬件接线部分,没有特别之处,能下载程序即可,串口接线也只要公地、TXRX交叉接线即可。
错误现象
- 串口进行接收数据时,串口调试助手中显示的数据是乱码的
- 用定时器做定时中断,定时器定出的时间误差很大

从以上图片可以看出,我理想的是每300ms打印一次,但是串口助手中打印出来的大概是每2s打印一次,误差较大。但是定时器的配置是没有问题的(因为是从正确的代码中CV过来的)
解决策略
一、对于串口助手出现乱码
1. 检查波特率是否一致
2. 检查串口配置
3. 有必要的话可以检查对应文件的编码格式
4. 以上都没有问题的情况下,需要用户检查自己工程的晶振频率是否正确,我自己的板子的晶振是8MHz,但是ST官方的固件库的默认晶振是25MHz,所以需要进行修改才可以
第一步 打开#include "stm32f4xx.h"
第二步 找到 HSE_VALUE 的宏定义,修改为自己的晶振的频率即可
完成以上步骤,我的串口输出才正常显示,希望可以帮到和我一样问题的朋友

二、 解决定时器定时误差较大策略
- 检查定时器基础配置是否有误
- 当自己的定时器的基础配置没有问题之后,如果定时器依然出现误差较大的情况,则继续修改
- 第一步 打开 system_stm32f4xx.c
- 第二步 找到PLL_M 的宏定义,修改为自己的晶振频率即可

完成以上步骤,我的定时器的定时没有问题了。300ms打印一次,基本没有什么问题
做个简单记录,希望帮助到和我有同样问题的朋友。
更多推荐



所有评论(0)