打印

USART只有一个DR寄存器,当数据正在发送时产生了接收中断怎么办

[复制链接]
3896|5
手机看帖
扫描二维码
随时随地手机跟帖
跳转到指定楼层
楼主
louc|  楼主 | 2012-12-19 12:51 | 只看该作者 回帖奖励 |倒序浏览 |阅读模式
我用的是stm32f10x,只有一个USART_DR寄存器,当数据还没有发送成功时来了一个接收中断,那么USART_DR中的数据岂不是被覆盖了? 我看到框图里写了一个发送寄存器TDR和一个接受寄存器RDR,那为什么程序中表现的只有一个USART_DR(地址0x40013804)呢?

相关帖子

沙发
killvx| | 2012-12-19 13:56 | 只看该作者
发送寄存器TDR和接收寄存器RDR 是同一个地址 0x40013804
选择不同模式 接收或发送时 自动切换寄存器的

使用特权

评论回复
板凳
jlass| | 2012-12-19 14:11 | 只看该作者
应该是一个只能读,一个只能写

使用特权

评论回复
地板
louc|  楼主 | 2012-12-19 14:12 | 只看该作者
killvx 发表于 2012-12-19 13:56
发送寄存器TDR和接收寄存器RDR 是同一个地址 0x40013804
选择不同模式 接收或发送时 自动切换寄存器的 ...

是不是对USART_DR读的时候读的是RDR,对USART_DR写的时候操作的是TDR?

使用特权

评论回复
评论
killvx 2012-12-19 14:17 回复TA
对的 
5
zchong| | 2012-12-20 13:10 | 只看该作者
表面上是一个寄存器,其实不是,可以全双工,同时收发

使用特权

评论回复
评分
参与人数 1威望 +1 收起 理由
louc + 1 2
6
louc|  楼主 | 2012-12-20 18:50 | 只看该作者
zchong 发表于 2012-12-20 13:10
表面上是一个寄存器,其实不是,可以全双工,同时收发

抱歉,点错了,本来结贴给分的...

使用特权

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

本版积分规则

0

主题

0

帖子

0

粉丝