OpenEdv-开源电子网

 找回密码
 立即注册
正点原子全套STM32/Linux/FPGA开发资料,上千讲STM32视频教程免费下载...
查看: 1956|回复: 1

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

[复制链接]

1

主题

8

帖子

0

精华

新手入门

积分
14
金钱
14
注册时间
2019-7-19
在线时间
4 小时
发表于 2019-7-19 15:18:56 | 显示全部楼层 |阅读模式
1金钱
最近学习到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这位清零。这应该表示在中断读取并发送一个字节的数据后就不会再进中断了。但是实际情况并不是这样。
经过思考我的想法是,在芯片接受完一个字节之后,的确退出了中断,但是由于接收的波特率较慢,所以在退出中断后,第二个字节的数据又发送了过来,这时又进入中断去读取和发送。
这个是我的想法不知道对不对?求解答 谢谢!



最佳答案

查看完整内容[请看2#楼]

你思考的很有道理,饭都是一口一口吃的。
正点原子逻辑分析仪DL16劲爆上市
回复

使用道具 举报

31

主题

1955

帖子

3

精华

论坛元老

Rank: 8Rank: 8

积分
4518
金钱
4518
注册时间
2018-5-11
在线时间
945 小时
发表于 2019-7-19 15:18:57 | 显示全部楼层
你思考的很有道理,饭都是一口一口吃的。
我的开源链接 https://github.com/ShuifaHe/STM32.git  请关注,点赞支持哦。
回复

使用道具 举报

您需要登录后才可以回帖 登录 | 立即注册

本版积分规则



关闭

原子哥极力推荐上一条 /2 下一条

正点原子公众号

QQ|手机版|OpenEdv-开源电子网 ( 粤ICP备12000418号-1 )

GMT+8, 2025-6-8 05:46

Powered by OpenEdv-开源电子网

© 2001-2030 OpenEdv-开源电子网

快速回复 返回顶部 返回列表