完善资料让更多小伙伴认识你,还能领取20积分哦, 立即完善>
扫一扫,分享给好友
手册上是说当RX-FIFO中的一个字节被CPU读出,RX_POINTER_F才会减一。我直接跑官方的UART_TxRx_Function例程,串口输入8个以上的字节是正常回显的。但是如果在接收中断里打一个断点单步调试,发现停在断电位置的时候RX_POINTER_F就已经少了2个字节了,而且每走一步RX_POINTER_F都会减2,这就导致之后去循环读取RBR的时候得到的数据不全。请问有人遇到过这个问题吗,是不是我什么地方没有配置好?
另外,我发现每走一步RX_POINTER_F减2的时候RBR和THR寄存器里的值刚好是被读出的两个字节,为什么会这样?而且我看手册里RBR和THR指向的是同一个地址,为什么会是两个不同的值? |
|
相关推荐
1个回答
|
|
根据您的描述,可能是您在接收中断中未正确处理RX_FIFO中的数据导致的问题。当接收中断触发时,应该从RX_FIFO中读取所有的数据,并将RX_POINTER_F更新为RX_FIFO中新的数据起始位置。否则,RX_POINTER_F将会指向上一次读取的位置,导致访问RX_FIFO时读取到的是旧的数据,而不是新的数据。
另外,关于RBR和THR指向同一地址的问题,这是因为UART的数据收发是通过RBR和THR寄存器进行的。当收到一个字节时,UART会将其存储在FIFO中,并将其写入RBR寄存器。当要发送一个字节时,将要发送的数据写入THR寄存器,UART将从THR寄存器中读取数据并发送到外部设备。因此,RBR和THR指向的是同一FIFO地址,但在不同的时刻起到不同的作用。 |
|
|
|
只有小组成员才能发言,加入小组>>
672 浏览 0 评论
1096 浏览 1 评论
2462 浏览 5 评论
2791 浏览 9 评论
移植了freeRTOS到STMf103之后显示没有定义的原因?
2626 浏览 6 评论
使用eim外接fpga可是端口一点反应都没有有没有大哥指点一下啊
643浏览 9评论
639浏览 7评论
请教大神怎样去解决iMX6Q在linux3.0.35内核上做AP失败的问题呢
770浏览 6评论
614浏览 5评论
656浏览 5评论
小黑屋| 手机版| Archiver| 电子发烧友 ( 湘ICP备2023018690号 )
GMT+8, 2024-11-13 15:08 , Processed in 0.979331 second(s), Total 49, Slave 39 queries .
Powered by 电子发烧友网
© 2015 bbs.elecfans.com
关注我们的微信
下载发烧友APP
电子发烧友观察
版权所有 © 湖南华秋数字科技有限公司
电子发烧友 (电路图) 湘公网安备 43011202000918 号 电信与信息服务业务经营许可证:合字B2-20210191 工商网监 湘ICP备2023018690号