打印

USART1_DR总是0x00000000

[复制链接]
5922|6
手机看帖
扫描二维码
随时随地手机跟帖
跳转到指定楼层
楼主
logokfu|  楼主 | 2012-4-20 12:14 | 只看该作者 回帖奖励 |倒序浏览 |阅读模式
本帖最后由 **kfu 于 2012-4-20 12:55 编辑

首先说明这个问题是串口数据寄存的问题。

硬件调试可以正常发送数据,我在超级终端中可以看到STM32发送过来的数据。

但是为什么用JLINK   debug读取出来的USART1_DR的总是零呢。

沙发
logokfu|  楼主 | 2012-4-20 12:58 | 只看该作者
难道这个是我debug方法的问题?程序运行到这儿停不了,数据直接被清空了吗?

使用特权

评论回复
板凳
aozima| | 2012-4-20 14:24 | 只看该作者
跟硬件相关的寄存器不能这么看的。
读与写不是同一个功能。
而且,有些寄存器是带有读清零的特性。

使用特权

评论回复
地板
lut1lut| | 2012-4-21 16:34 | 只看该作者
从USART功能框图可以看到,物理上有两个独立的寄存器TDR和RDR,而面向用户的就是一个寄存器,即USART_DR。对它的读操作,是返回RDR寄存器的值;对它的写操作则实际是写到TDR。

你的情况是STM32发送数据到超级终端;并未收到数据,当然读到USART_DR=0咯。

使用特权

评论回复
5
logokfu|  楼主 | 2012-4-21 18:23 | 只看该作者
6# lut1lut

被你说中了。

使用特权

评论回复
6
243671731qq| | 2014-5-12 12:15 | 只看该作者
我也遇到了不能写USART数据寄存器的问题,我配置好了UE,TE,字长,停止位等。
执行   USART1->DR ='a';
单步调试上面语句执行后调试窗口中的数据寄存器还是  USART1->DR=0x0000
求解答,感激



使用特权

评论回复
7
戈卫东| | 2014-5-12 14:32 | 只看该作者
发送寄存器是不可读的。
读的总是接收寄存器。

使用特权

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

本版积分规则

76

主题

2646

帖子

7

粉丝