yinhenmei 发表于 2015-1-9 23:24:52

新手求助

我STM32串口为不占cpu资源使用DMA方式进行接收,设定接收缓冲区,在while(1)中查询已接收到的数据并进行处理,可是使用串口调试工具发送数据到板子,板子再将数据通过窗口打印处理,打印的数据和发送的数据出现不一致情况,求大侠帮忙看看!谢谢大家

nana妞 发表于 2015-1-9 23:42:42

额。。。。帮顶

晓枫VS枯叶 发表于 2015-1-10 09:17:43

串口数据接收处理时有没有进行校验!

黄小狼 发表于 2015-1-10 09:56:54

看一下串口设置是否一样,波特率,数据位,校验位等是否一致,还有显示方式和发送方式是否一致

yinhenmei 发表于 2015-1-11 08:11:15

用仿真器直接观察缓冲区,这才是根。
发出来就多了道手续。
一步一步查,就是把几个过程分开,保证前面的结果正确,再查下一步。一步一步,就是这意思。

yinhenmei 发表于 2015-1-11 08:11:54

晓枫VS枯叶 发表于 2015-1-10 09:17
串口数据接收处理时有没有进行校验!

通过j-link在线仿真调试,发现打印出来的数据和缓冲区的数据一致,可是这个数据和我发送的是有区别的,比如我发送
ff fe fe f0 e0
可是缓冲区的数据变成了
ff fe 20 f0 f0
这样的的数据,难道DMA搬运数据出问题?可是我的配置和网上的例程基本差不多的。如果DMA搬运数据出问题,可是第一个字节ff总是不会出错,这是为啥?

yinhenmei 发表于 2015-1-11 08:12:20

黄小狼 发表于 2015-1-10 09:56
看一下串口设置是否一样,波特率,数据位,校验位等是否一致,还有显示方式和发送方式是否一致 ...

这个检查过好几次,没有什么问题的

yinhenmei 发表于 2015-1-11 08:13:06

晓枫VS枯叶 发表于 2015-1-10 09:17
串口数据接收处理时有没有进行校验!

有校验。有木有可能是硬件问题,因为断电一段时候在上电是发送正常,长时间运行一下,又可能出现这样的问题??

show明 发表于 2015-1-11 08:16:21

用DMA接收数据时要注意一帧数据接收完,或者一帧数据和设定的DMA缓冲区不一样长时候的处理方法。

HIT_621 发表于 2015-1-11 08:20:43

用DMA接收数据时要注意一帧数据接收完,或者一帧数据和设定的DMA缓冲区不一样长时候的处理方法。
页: [1] 2
查看完整版本: 新手求助