描述:
单片机或别的MCU可能有多级中断,中断可设定优先级。一般有中断标志寄存器(IF)、中断使能寄存器(IE)、全局中断使能寄存器。
假设有两个中断源INT1、INT2,INT1优先级大于INT2,。全部使能,INT1和INT2中断源的频率是固定的,并且INT1中断源的中断频率远高于INT2。
疑问:
假设此时,单片机是单级中断模式,INT1和INT2同时到来(中断标志位置1),由于INT1优先级大于INT2,那么单片机会优先响应INT1,进入INT1的中断处理程序。中断处理程序处理完之后(中断处理的时间大于INT1中断产生的时间),发现INT1又有中断了(中断标志位为1),由于INT1优先级大于INT2,单片机还是会处理INT1。这样就造成INT2的中断始终得不到处理,只响应INT1。
不知道我说的对不对,请教下大家!
解决方案1:
中断处理的时间大于INT1中断产生的时间
这种问题在程序设计上就要考虑,绝对不允许出现这种情况。
假如像你说的这样,INT2能不能处理不知道,INT1的处理首先已经不正常了。
你说的情况确实可能出现,但是个人感觉这种情况INT1的中断频率太高了,如果真得这么高的频率才能解决问题,那估计也没有设置中断的必要了:直接在主函数判断处理即可
解决方案3:你说的这个情况,实际和MCU架构设计有关,可以设计成你说的这样,但也可以设计成同时到依据优先级处理,先到则先处理的模式,所以,具体看MCU手册。