串口中断和定时中断,外部中断在一起如何调用?

2019-03-24 18:43发布

当系统有个定时中断。
比如定时采集温度值,然后通过串口发送到上位机。这样程序里要用到定时中断和串口中断
比如定时1s采样一次。那么是1s内调用串口中断。还是1s外再调用

如果是1s后才允许用串口中断。是不是就不是1s定时采样了?那也就是说,执行1s以后。再调用串口接收中断了。就会不准。接收数据也要时间的哈。比如上位机向下位机写入一帧数据,24个字节。(接收中断)。波特率9600. 那么24*8/9600=20ms

也就是说,处理了定时中断后,再处理的串口中断
时间上:实际是定时+串口


如果是1s内,那么定时中断内嵌套串口中断?

不清楚,串口接收中断究竟用于定时中断内,还是外。


当然,定时中断内只是设定个标志位,具体运算程序还是在主循环里做


担心有无这种情况出现:


上位机发来数据,不收就会丢。计时被中断,就会错过。

唯一一个,就是发命令时候正想翻转输出脚时候,来了串口中断。。。 此帖出自小平头技术问答
友情提示: 此问题已得到解决,问题已经关闭,关闭后问题禁止继续编辑,回答。
14条回答
kdy
2019-03-25 06:14
简单了说是中断嵌套问题,大了说是任务管理的问题,无操作系统裸奔型任务管理。
1、如果系统是自己设计那么简单,只需要做成顺序的就行,先采集温度,再发送标志给上位机,上位机回答并进行状态设置,同步整个系统,只用一个定时中断
2、如果上位机必须异步设置的话,就是通讯的问题了,已经忘记51的串口有没有FIFO深度设置了,如果没有那么中断就是一个字节一个,异步中断肯定需要嵌套
,这时1S中断优先级高,进去后做个标志马上出来,然后进入串口中断,51的中断响应大概是us级别的吧,应该来得及接收一个字节的数据。

一周热门 更多>