你的浏览器版本过低,可能导致网站不能正常访问!
为了你能正常使用网站功能,请使用这些浏览器。

uart串口为什么能一次接收好几个字节的数据?

[复制链接]
HEnthusiast 提问时间:2019-7-19 15:59 /
最近学习到uart串口的部分。这里我用的是中断接收,将读取到的数据再发送出去。
void USART1_IRQHandler(void)
{
     uint8_t receive_data = 0;
     if(USART_GetITStatus(USART1,USART_IT_RXNE)!=RESET)
     {
          receive_data = USART_ReceiveData(USART1);
          USART_SendData(USART1, receive_data);
          while( USART_GetFlagStatus(USART1, USART_FLAG_TXE) != SET);
     }
}

我发现哪怕给芯片发送好几个字节的数据,芯片都能收到,而且原样的发送出来。
但是根据我学习的过程中发现的是,芯片一次接收的只有8位,一个字节。并且在调用
USART_ReceiveData()后会将RXNE这位清零。这应该表示在中断读取并发送一个字节的数据后就不会再进中断了。但是实际情况并不是这样。

经过思考我的想法是,在芯片接受完一个字节之后,的确退出了中断,但是由于接收的波特率较慢,所以在退出中断后,第二个字节的数据又发送了过来,这时又进入中断去读取和发送。
这个是我的想法不知道对不对?求解答 谢谢!
收藏 评论10 发布时间:2019-7-19 15:59

举报

10个回答
废鱼 回答时间:2019-7-19 16:19:49
两个问题
1、读取串口数据后,未将串口接收中断标志位我清除掉
2、串口接收数据并发出去,但是接收到以后未关闭中断,后续新的数据会继续进入中断发送。只要中断正常,后面的数据是会继续发送的。
DavidTan 回答时间:2019-7-19 16:23:21
串口发送一个字节,普遍是需要发送10个bit,用最常用的115200波特率来计算的话,10bit需要占用大约87us;
USART_IT_RXNE是接收非空的中断标记,也就是说,要等一个字节被完全接收才会产生这个中断,也就是每87us才会产生一次中断,87us够芯片跑很多很多语句了
HEnthusiast 回答时间:2019-7-19 16:30:25
安 发表于 2019-7-19 16:19
两个问题
1、读取串口数据后,未将串口接收中断标志位我清除掉
2、串口接收数据并发出去,但是接收到以后未 ...

但是用户手册中USART_SR寄存器的RXNE中的描述是写“对USART_DR的读操作可以将该位清零“。
中断如果不关闭的话,发送完毕后,再读数据当中还是有不少时间的,为什么任务完成了不退出呢?
HEnthusiast 回答时间:2019-7-19 16:32:02
tgw860910 发表于 2019-7-19 16:23
串口发送一个字节,普遍是需要发送10个bit,用最常用的115200波特率来计算的话,10bit需要占用大约87us;
U ...

也就是我的理解是差不多的?  这87us 程序就回到原来的地方执行,等到RXNE标志位被置位后,再进入中断?  所以这就是为什么要用DMA接收把?
废鱼 回答时间:2019-7-19 16:56:50
楼主你的意思描述不明确啊。比如你发送一个1,串口是回复了很多个1吗?
HEnthusiast 回答时间:2019-7-19 17:13:22
安 发表于 2019-7-19 16:56
楼主你的意思描述不明确啊。比如你发送一个1,串口是回复了很多个1吗?

不是,比如我发送01 02 03 给芯片,我想着一次中断只能发一个字节,所以应该只能发01,然后中断应该就退出了,实际发送了01 02 03 三个字节是不是表示进入了多次中断?
freeworld-14222 回答时间:2019-7-19 23:32:54
HEnthusiast 发表于 2019-7-19 17:13
不是,比如我发送01 02 03 给芯片,我想着一次中断只能发一个字节,所以应该只能发01,然后中断应该就退 ...

楼上朋友说的很对,因为速度快,多次进了中断
废鱼 回答时间:2019-7-20 09:00:26
数据多时会有丢失。但是也是会继续进入中断。除非收到以后就把中断关闭了。只要接收寄存器为空时,有新数据来了以后。接收中断继续工作。
Kevin_G 回答时间:2019-7-20 11:37:00
因为CPU速度远快于UART
季yy 回答时间:2019-7-21 13:03:26
我也有这种想法。

所属标签

相似问题

关于
我们是谁
投资者关系
意法半导体可持续发展举措
创新与技术
意法半导体官网
联系我们
联系ST分支机构
寻找销售人员和分销渠道
社区
媒体中心
活动与培训
隐私策略
隐私策略
Cookies管理
行使您的权利
官方最新发布
STM32Cube扩展软件包
意法半导体边缘AI套件
ST - 理想汽车豪华SUV案例
ST意法半导体智能家居案例
STM32 ARM Cortex 32位微控制器
关注我们
st-img 微信公众号
st-img 手机版