[STM32F3] usart相关问题请教

[复制链接]
1598|18
 楼主| 小盼abc 发表于 2015-11-12 10:41 | 显示全部楼层 |阅读模式
本帖最后由 小盼abc 于 2015-11-12 20:20 编辑

usart接收的时候,检测到起始位RXNE置位,设置RXNEIE进入中断 ,但是当数据接受完成,可读取的时候,会在此设置RXENIE,中间没有复位,这样不会导致数据错误码?

捕获.PNG
捕获1.PNG
捕获.PNG
捕获1.PNG
 楼主| 小盼abc 发表于 2015-11-12 12:51 | 显示全部楼层
为什么没人啊?
 楼主| 小盼abc 发表于 2015-11-12 12:51 | 显示全部楼层
大神都去哪了
amanda_s 发表于 2015-11-12 14:55 | 显示全部楼层
没有用过。
觉得如果这两个可以一起用的话,肯定在接收数据前要先清RXNE标志吧。
crystal1987 发表于 2015-11-12 15:30 | 显示全部楼层
估计大家都没太明白你想问什么?“设置RXNEIE进入中断 ,但是当数据接受完成,可读取的时候,会在此设置RXENIE,中间没有复位”,它们是同一个标识位么?
zhuotuzi 发表于 2015-11-12 15:58 | 显示全部楼层
配置初始化都是在接收之前进行的,接收启动后,就不干预了,只需要读取数据接收寄存器,然后清理标志就行了。
 楼主| 小盼abc 发表于 2015-11-12 16:06 | 显示全部楼层
crystal1987 发表于 2015-11-12 15:30
估计大家都没太明白你想问什么?“设置RXNEIE进入中断 ,但是当数据接受完成,可读取的时候,会在此设置RXE ...

usart通信的时候  接受方一直在采样从发送方发送过来的数据   当接受到发送过来的数据起始位时  RXEN将由硬件设置为1  但是当该帧数据传输结束 照数据手册所述  会再次产生RXEN置1行为  这样不会产生错误码   
 楼主| 小盼abc 发表于 2015-11-12 16:06 | 显示全部楼层
zhuotuzi 发表于 2015-11-12 15:58
配置初始化都是在接收之前进行的,接收启动后,就不干预了,只需要读取数据接收寄存器,然后清理标志就行了 ...

usart通信的时候  接受方一直在采样从发送方发送过来的数据   当接受到发送过来的数据起始位时  RXEN将由硬件设置为1  但是当该帧数据传输结束 照数据手册所述  会再次产生RXEN置1行为  这样不会产生错误码
zhuotuzi 发表于 2015-11-12 16:10 | 显示全部楼层
小盼abc 发表于 2015-11-12 16:06
usart通信的时候  接受方一直在采样从发送方发送过来的数据   当接受到发送过来的数据起始位时  RXEN将由 ...

接收后,置位后,系统才开始读取数据的,不会产生错误,读取完成后,应该会清零。
changmiao 发表于 2015-11-12 17:21 | 显示全部楼层
建议你还是看英文文档吧!
玄德 发表于 2015-11-12 17:52 | 显示全部楼层

在此,应当是“再次”。这中文,还真不如看英文。

只收到起始位,应当不会产生RXNE标志,最多会产生错误标志。
最好把英文放出来。

评分

参与人数 1威望 +2 收起 理由
小盼abc + 2 赞一个!

查看全部评分

309030106 发表于 2015-11-12 20:02 | 显示全部楼层
当接受到发送过来的数据起始位时  RXEN将由硬件设置为1
 楼主| 小盼abc 发表于 2015-11-12 20:21 | 显示全部楼层
changmiao 发表于 2015-11-12 17:21
建议你还是看英文文档吧!

英文文档上传了  好像意思也长不多  您可以看看 吗  不知道我意思有没有理解错
 楼主| 小盼abc 发表于 2015-11-12 20:22 | 显示全部楼层
玄德 发表于 2015-11-12 17:52
在此,应当是“再次”。这中文,还真不如看英文。

只收到起始位,应当不会产生RXNE标志,最多会产生错误 ...

已经上传了英文版的  好像意思也差不多啊
diweo 发表于 2015-11-12 20:29 | 显示全部楼层
手册上这样写好像是有点混淆。不过从实践经验来看,肯定是没影响的。
玄德 发表于 2015-11-12 20:45 | 显示全部楼层
玄德 发表于 2015-11-12 21:16 | 显示全部楼层

刚才看了下英文全文,LZ提到的段落都找到了。

原文虽然说“The start bit is confirmed (RXNE flag set, interrupt generated if RXNEIE=1)”,
但如果说RXNE紧随start bit出现,也有些牵强。
原文倒有“The RXNE flag is set after every byte received”这样明确的话。

LZ不用纠结文档了。总之是这样的:
一旦发现RXNE为1,或者进入接收中断,就说明接收到新数据;
严格一点的话,先检查PE、FE这些错误标志,
然后自己决定要还是不要。

估计多数人都不去检查这些标志。



冰河w 发表于 2015-11-12 21:42 | 显示全部楼层
一旦发现RXNE为1,或者进入接收中断,就说明接收到新数据;

楼主可以编个小程序验证一下
acguy 发表于 2015-11-13 07:05 | 显示全部楼层
收到有效起始位,肯定将设置RXNE,不管数据有没有错误,但不是在刚收到起始位时设置,而是在收到停止位时(不管停止位有没有错误)。
您需要登录后才可以回帖 登录 | 注册

本版积分规则

22

主题

86

帖子

0

粉丝
快速回复 在线客服 返回列表 返回顶部