关于STM32 串口接收起始位的疑问

数据手册(STM32ReferenceManual)上说当接收到一帧数据的起始位时要设置RXNE标志位,而接收完这帧数据时也要设置RXNE标志位,那么一次完整的接收要设置... 数据手册(STM32 Reference Manual)上说 当接收到一帧数据的起始位时要设置RXNE标志位,而接收完这帧数据时也要设置RXNE标志位,那么一次完整的接收要设置两次RXNE???可实际并不是这样的呀。求高手解答~ 展开
 我来答
610095871
2014-02-11 · TA获得超过455个赞
知道小有建树答主
回答量:380
采纳率:100%
帮助的人:267万
展开全部
你截的图这部分主要是判断起始桢,也就是串口协议中的起始位。因为要判断所以就要采样,而采样的频率往往比较高,这样才能保证采样的可靠性。
起始信号是一个低电平信号 ,那么就会采集到下降沿
在USART中,如果辨认出一个特殊的采样序列,那么就认为侦测到一个起始位。
该序列为:1 1 1 0 X 0 X 0 X 0 0 0 0

首先这个序列的所有值都是起始位的采样值,都是用来判断起始位的,而你截图下面的文字都是对这些采样值的判断,既然是采集下降沿,那么就必须有1 之后变成0 可以理解成111都是高电平
x0x0 是从1逐渐变到0的过程 后面的0000 都是0 这样完成了一个起始位的侦测。之后才会设置标志位。
而你对标志位的理解是正确的、

如果还有问题可以
百度搜索 101度开水 就可以找到我。
更多追问追答
追问
谢谢 谢谢~ 我想问下   假如我接收到一帧的数据(它包括起始位、数据位、停止位),按照数据手册的说法,监测到起始位0时要置位RXNE(什么时候复位?)。接收完停止位,数据可读取了再次置位RXNE。如果两次置位之间没有复位,必然要产生溢出错误。我对这个过程不能理解。
追答
我 看了下手册 收到起始位会置位RXNE,数据接受完成再次置位RXNE没看到,只是看到在多缓冲器通讯的时候,RXNE是在每个字节接收后被置位的,并且由DMA进行读操作而清0.

在单缓冲器下 读取DR寄存器可以清RXNE,也可以写0清除。 只要在接受下一字节前清除rxne就可以避免溢出。
推荐律师服务: 若未解决您的问题,请您详细描述您的问题,通过百度律临进行免费专业咨询

为你推荐:

下载百度知道APP,抢鲜体验
使用百度知道APP,立即抢鲜体验。你的手机镜头里或许有别人想知道的答案。
扫描二维码下载
×

类别

我们会通过消息、邮箱等方式尽快将举报结果通知您。

说明

0/200

提交
取消

辅 助

模 式