OpenEdv-开源电子网

 找回密码
 立即注册
正点原子全套STM32/Linux/FPGA开发资料,上千讲STM32视频教程免费下载...
查看: 8592|回复: 5

串口乱码问题,不是简单的乱码

[复制链接]

13

主题

41

帖子

0

精华

中级会员

Rank: 3Rank: 3

积分
277
金钱
277
注册时间
2014-7-30
在线时间
32 小时
发表于 2015-1-25 17:03:29 | 显示全部楼层 |阅读模式
5金钱





如图,通过串口工具给STM32的UART5发送“AT*DEBUGON=1?”字符串,一遍好一遍坏,一遍数据正常,一遍就部分变了...过去还不这样,最近挑停止模式才开始的,而且现在屏蔽了停止模式也这样,我对串口也没做过什么调整,唯一的就是串口会吞首个字符问题,不过那也是发送时候的问题,无非也就是多加了个UART5->SR;,实在想不通是什么原因,求大神提供思路。

正点原子逻辑分析仪DL16劲爆上市
回复

使用道具 举报

58

主题

6294

帖子

1

精华

资深版主

Rank: 8Rank: 8

积分
11537
金钱
11537
注册时间
2014-4-1
在线时间
1314 小时
发表于 2015-1-25 17:09:48 | 显示全部楼层
串口是很简单的东西,问题在自己。

软件方面, 先确保波特率、格式正确,然后:
发送端,没有等上个字节发完,就急着填后一个数据。(用PC发送,这情况不存在。)
接收端,可能没有及时接收、存储数据,或者存储有问题。(LZ情况,这个最可能。)

硬件方面,可能性就多了,虚焊、接错、电平不足,等等。

另外,乱码没有简单、复杂或者其他分类,分了也没意思。
回复

使用道具 举报

13

主题

41

帖子

0

精华

中级会员

Rank: 3Rank: 3

积分
277
金钱
277
注册时间
2014-7-30
在线时间
32 小时
 楼主| 发表于 2015-1-25 17:12:13 | 显示全部楼层
我知道问题出在哪里了,因为每次进入停止模式,串口的配置都会消失,而且我是WFI中断唤醒,所以如果是串口唤醒,我需要及时重新配置,所以就在每个串口中断里都引入了一个函数,里面主要就是运行
SystemInit();
delay_init(72);
UARTALL_Init(9600);
把UART波特率,还有系统时钟设置一下,虽然知道中断里写这些不太好,可是我也想不到什么更好的办法了,每次只要运行一次这个就会乱码一次。因为我也不太清楚停止模式需要重新配置哪些东西,所以干脆就都重新来了一遍,求大神帮助想想办法,解决一下!!!
回复

使用道具 举报

13

主题

41

帖子

0

精华

中级会员

Rank: 3Rank: 3

积分
277
金钱
277
注册时间
2014-7-30
在线时间
32 小时
 楼主| 发表于 2015-1-25 17:13:09 | 显示全部楼层
回复【2楼】xuande:
---------------------------------
多谢解答,我大概找到方向了,可是解决不了,已经描述了新的情况。
回复

使用道具 举报

13

主题

41

帖子

0

精华

中级会员

Rank: 3Rank: 3

积分
277
金钱
277
注册时间
2014-7-30
在线时间
32 小时
 楼主| 发表于 2015-1-25 17:18:51 | 显示全部楼层
排除了一下,确定了SystemInit();的问题,只要不运行这个,就是正常的,但是这样停止模式之后就不能恢复时钟了...而且最开始初始化的时候我也是需要运行这个的,就没有问题,不知道为什么中间再运行就不行了。
回复

使用道具 举报

2

主题

13

帖子

0

精华

初级会员

Rank: 2

积分
110
金钱
110
注册时间
2018-5-26
在线时间
7 小时
发表于 2018-6-21 16:02:09 | 显示全部楼层
进来学习一下
ABB定位器www.chinaabb-positio.com
回复

使用道具 举报

您需要登录后才可以回帖 登录 | 立即注册

本版积分规则



关闭

原子哥极力推荐上一条 /2 下一条

正点原子公众号

QQ|手机版|OpenEdv-开源电子网 ( 粤ICP备12000418号-1 )

GMT+8, 2025-5-26 05:46

Powered by OpenEdv-开源电子网

© 2001-2030 OpenEdv-开源电子网

快速回复 返回顶部 返回列表