关于优先级的一点问题思考
中断嵌套和中断优先级
一般上我们是把红外接到外部中断,这时候如果你是用数码管显示对应的键码信息,数码管的扫描是在定时器中断中。这时候要特别注意如果红外的外部中断比数码管的定时器中断固有优先级高,这时候设置数码管的中断优先级为高优先级!不然数码管的扫描如果受键码的解析的拖延会产生闪烁!
同时也让我联想到了关于多功能时钟制作过程中也有类似的问题,数码管,按键以及红外都有用到,如何实现嵌套或者说该如何安排优先级?
首先要知道各个程序的大概执行时间:
数码管定时器中断程序执行需要几十个us。(数码管刷新时间大于10ms就会产生明显的闪烁)
一个按键扫描程序可达几百us(程序状态判断时间16ms,按键抖动大概10ms,按键持续按下或弹起大于100ms)
红外程序执行可以达到几十个ms。
所以如果数码管对红外进行嵌套,在红外最短几百us下,也当然是允许数码管扫描的几十us的。
同时注意,红外和按键不能彼此嵌套,因为他们会互相影响。按键几百us的扫描定会对红外键码的解析产生影响。
所以很明显了,我们必须把数码管的优先级设置成最高,可以打断红外和按键的中断。
而红外和按键处于相同优先级,彼此不能打断!
IO多用
同时还有一个问题,就是我们的单片机IO,通常并不只是控制一个外设!那么问题来了,就假如说我LED和液晶是都用到了相同的IO口,而在某一个程序中我恰好两个外设我也都用到了!
假如出现了这样的情况:当我在给液晶的IO赋值的时候,这个时候恰好LED刷新的中断来了,要占用IO,那么造成的液晶的IO赋值很可能就是错的。虽然这种情况发生的概率很低,但是我们出于程序的严谨性,也要进行考虑!
显然这个时候我们是必须得放弃刷新的,这在宏观上来看,放弃一次刷新并不会对LED产生什么影响,但是如果执意要让LED影响液晶,那么对应的视觉就不一样了!
文章来源: recclay.blog.csdn.net,作者:ReCclay,版权归原作者所有,如需转载,请联系作者。
原文链接:recclay.blog.csdn.net/article/details/79426163
- 点赞
- 收藏
- 关注作者
评论(0)