单片机串口中断函数中,如果在里面时间过长,后面来的数据会被自动丢弃吗

 我来答
一剑出血
高粉答主

2014-07-16 · 醉心答题,欢迎关注
知道大有可为答主
回答量:5.7万
采纳率:78%
帮助的人:1.7亿
展开全部
不是自动丢弃,而是反复接收,导致后来的数据将先收到、未处理的数据给覆盖了。

例如对方发给你一串0x01、0x02、0x03,假如你中断函数太过磨叽,可能在将0x01从缓冲区中取出后、在处理的过程中又先后收到了0x02、0x03,那么0x03会把0x02覆盖掉,导致你下次再进入串口中断函数时只能取出0x03了。

因此中断函数务必简洁高效,只要不是火烧眉毛的判断/处理,一律应当扔到主循环体或常规任务中处理。
另外现在很多的单片机串口是具有硬件FIFO的,善用FIFO也会大大提高整个系统的中断效率。
jmhyys
2014-07-16 · TA获得超过524个赞
知道小有建树答主
回答量:1052
采纳率:62%
帮助的人:286万
展开全部
  1. 首先不允许过长时间的中断处理函数。

  2. 实际情况里,进中断,关中断,处理,再开中断。这种处理方式也有。

  3. 尽量用标志位方式处理,弄短处理函数。

  4. 中断-中断函数(中断-中断函数(中断-中断函数)),这样一直再入到单片机资源耗尽。

追问
你说的是不允许,要是真的发生了呢,比如说我在接受到第一个字节的数据后,在串口中断函数中延时10s,我想知道会发生什么,我后面的数据还能接收到吗
追答
中断-中断函数(中断-中断函数(中断-中断函数)),这样一直再入到单片机资源耗尽(等于死机)。

所以实际上你根本不知道他收到了没,
已赞过 已踩过<
你对这个回答的评价是?
评论 收起
推荐律师服务: 若未解决您的问题,请您详细描述您的问题,通过百度律临进行免费专业咨询

为你推荐:

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

类别

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

说明

0/200

提交
取消

辅 助

模 式