打印
[STM32F3]

usart相关问题请教

[复制链接]
1170|18
手机看帖
扫描二维码
随时随地手机跟帖
跳转到指定楼层
楼主
小盼abc|  楼主 | 2015-11-12 10:41 | 只看该作者 |只看大图 回帖奖励 |倒序浏览 |阅读模式
本帖最后由 小盼abc 于 2015-11-12 20:20 编辑

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

捕获.PNG (72.42 KB )

捕获.PNG

捕获1.PNG (28.27 KB )

捕获1.PNG

捕获.PNG (72.42 KB )

捕获.PNG

捕获1.PNG (28.27 KB )

捕获1.PNG
沙发
小盼abc|  楼主 | 2015-11-12 12:51 | 只看该作者
为什么没人啊?

使用特权

评论回复
板凳
小盼abc|  楼主 | 2015-11-12 12:51 | 只看该作者
大神都去哪了

使用特权

评论回复
地板
amanda_s| | 2015-11-12 14:55 | 只看该作者
没有用过。
觉得如果这两个可以一起用的话,肯定在接收数据前要先清RXNE标志吧。

使用特权

评论回复
5
crystal1987| | 2015-11-12 15:30 | 只看该作者
估计大家都没太明白你想问什么?“设置RXNEIE进入中断 ,但是当数据接受完成,可读取的时候,会在此设置RXENIE,中间没有复位”,它们是同一个标识位么?

使用特权

评论回复
6
zhuotuzi| | 2015-11-12 15:58 | 只看该作者
配置初始化都是在接收之前进行的,接收启动后,就不干预了,只需要读取数据接收寄存器,然后清理标志就行了。

使用特权

评论回复
7
小盼abc|  楼主 | 2015-11-12 16:06 | 只看该作者
crystal1987 发表于 2015-11-12 15:30
估计大家都没太明白你想问什么?“设置RXNEIE进入中断 ,但是当数据接受完成,可读取的时候,会在此设置RXE ...

usart通信的时候  接受方一直在采样从发送方发送过来的数据   当接受到发送过来的数据起始位时  RXEN将由硬件设置为1  但是当该帧数据传输结束 照数据手册所述  会再次产生RXEN置1行为  这样不会产生错误码   

使用特权

评论回复
8
小盼abc|  楼主 | 2015-11-12 16:06 | 只看该作者
zhuotuzi 发表于 2015-11-12 15:58
配置初始化都是在接收之前进行的,接收启动后,就不干预了,只需要读取数据接收寄存器,然后清理标志就行了 ...

usart通信的时候  接受方一直在采样从发送方发送过来的数据   当接受到发送过来的数据起始位时  RXEN将由硬件设置为1  但是当该帧数据传输结束 照数据手册所述  会再次产生RXEN置1行为  这样不会产生错误码

使用特权

评论回复
9
zhuotuzi| | 2015-11-12 16:10 | 只看该作者
小盼abc 发表于 2015-11-12 16:06
usart通信的时候  接受方一直在采样从发送方发送过来的数据   当接受到发送过来的数据起始位时  RXEN将由 ...

接收后,置位后,系统才开始读取数据的,不会产生错误,读取完成后,应该会清零。

使用特权

评论回复
10
changmiao| | 2015-11-12 17:21 | 只看该作者
建议你还是看英文文档吧!

使用特权

评论回复
11
玄德| | 2015-11-12 17:52 | 只看该作者

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

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

使用特权

评论回复
评分
参与人数 1威望 +2 收起 理由
小盼abc + 2 赞一个!
12
309030106| | 2015-11-12 20:02 | 只看该作者
当接受到发送过来的数据起始位时  RXEN将由硬件设置为1

使用特权

评论回复
13
小盼abc|  楼主 | 2015-11-12 20:21 | 只看该作者
changmiao 发表于 2015-11-12 17:21
建议你还是看英文文档吧!

英文文档上传了  好像意思也长不多  您可以看看 吗  不知道我意思有没有理解错

使用特权

评论回复
14
小盼abc|  楼主 | 2015-11-12 20:22 | 只看该作者
玄德 发表于 2015-11-12 17:52
在此,应当是“再次”。这中文,还真不如看英文。

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

已经上传了英文版的  好像意思也差不多啊

使用特权

评论回复
15
diweo| | 2015-11-12 20:29 | 只看该作者
手册上这样写好像是有点混淆。不过从实践经验来看,肯定是没影响的。

使用特权

评论回复
16
玄德| | 2015-11-12 20:45 | 只看该作者




使用特权

评论回复
17
玄德| | 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这些错误标志,
然后自己决定要还是不要。

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



使用特权

评论回复
18
冰河w| | 2015-11-12 21:42 | 只看该作者
一旦发现RXNE为1,或者进入接收中断,就说明接收到新数据;

楼主可以编个小程序验证一下

使用特权

评论回复
19
acguy| | 2015-11-13 07:05 | 只看该作者
收到有效起始位,肯定将设置RXNE,不管数据有没有错误,但不是在刚收到起始位时设置,而是在收到停止位时(不管停止位有没有错误)。

使用特权

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

本版积分规则

22

主题

86

帖子

0

粉丝