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 |