打印

紧急求教版主,stm32串口问题

[复制链接]
3096|3
手机看帖
扫描二维码
随时随地手机跟帖
跳转到指定楼层
楼主
ff8zgs|  楼主 | 2012-5-28 17:47 | 只看该作者 回帖奖励 |倒序浏览 |阅读模式
https://bbs.21ic.com/frame.php?frameon=yes&referer=http%3A//bbs.21ic.com/iclist-2.html
最近stm32 串口输出一直有问题,特别是单字节的输出。
现象1 单字节输出,只有开机能输出2个0Xff 然后就不输出了,板子未死机。
今天下午将串口部分所有的寄存器值都读出来了。
SR(状态寄存器)    0x0 或者 0x40跳动      变化位是TC位 应该算是正常
DR (数据寄存器)   0xff                        一直维持这个值,但是我程序给的不是这
                                                           个值 而且串口助手只有在开机时能收到2个
                                                           0xff
CR1(控制寄存器)      0x202c                    开串口,8位字长,无校验,只有接收中断
                                                           开启收发功能。和我的程序配置吻合
BRR (波特率寄存器) 0x1D4C                   计算出波特率9600    正常

其他寄存器都是0
现象2 如果我启用字符串输出,头几帧不正确后面都正确,包括寄存器都正确DR寄存器也能正确赋值
         如果我先启用字符串输出再单字节输出,单字节输出就正常,寄存器也都正常。

现在问题出来一个是 单字节下DR寄存器为什么于我写入的不同,第二字符串输出开始的几帧 数据不对,DR寄存器也不对

更详细的描述和代码见
https://bbs.21ic.com/frame.php?frameon=yes&referer=http%3A//bbs.21ic.com/iclist-2.html
沙发
香水城| | 2012-5-28 18:21 | 只看该作者
几点建议:

1)不要用串口助手作为调试依据,很多人都在这里栽过跟头,请直接用示波器看输出是否正确。
2)先不要使用ucos,先直接写个串口发送的程序,保证正确无误。这样可以排除OS干扰的问题。
3)检查一下开机输出的2个0Xff 是哪里来的,是否真的是你的程序送出?还是干扰所致?

另外,DR寄存器读和写操作的是不同的物理寄存器,程序是读不到写入DR的数值,只能读出接收到的数据;所以不能通过读DR寄存器判断发送是否成功。

使用特权

评论回复
板凳
airwill| | 2012-5-28 19:42 | 只看该作者
串口助手有时候是会骗人的.

使用特权

评论回复
地板
wenzj12345| | 2012-6-16 20:51 | 只看该作者
学习了 ,明天看看,我的配置应该没问题,但数据就是接收不对

使用特权

评论回复
发新帖 我要提问
您需要登录后才可以回帖 登录 | 注册

本版积分规则

18

主题

199

帖子

1

粉丝