关于优先级的一点问题思考

举报
ReCclay 发表于 2022/02/22 01:43:22 2022/02/22
【摘要】 中断嵌套和中断优先级 一般上我们是把红外接到外部中断,这时候如果你是用数码管显示对应的键码信息,数码管的扫描是在定时器中断中。这时候要特别注意如果红外的外部中断比数码管的定时器中断固有优先级高,这时候设...

中断嵌套和中断优先级

一般上我们是把红外接到外部中断,这时候如果你是用数码管显示对应的键码信息,数码管的扫描是在定时器中断中。这时候要特别注意如果红外的外部中断比数码管的定时器中断固有优先级高,这时候设置数码管的中断优先级为高优先级!不然数码管的扫描如果受键码的解析的拖延会产生闪烁!

同时也让我联想到了关于多功能时钟制作过程中也有类似的问题,数码管,按键以及红外都有用到,如何实现嵌套或者说该如何安排优先级?

首先要知道各个程序的大概执行时间:

数码管定时器中断程序执行需要几十个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

【版权声明】本文为华为云社区用户转载文章,如果您发现本社区中有涉嫌抄袭的内容,欢迎发送邮件进行举报,并提供相关证据,一经查实,本社区将立刻删除涉嫌侵权内容,举报邮箱: cloudbbs@huaweicloud.com
  • 点赞
  • 收藏
  • 关注作者

评论(0

0/1000
抱歉,系统识别当前为高风险访问,暂不支持该操作

全部回复

上滑加载中

设置昵称

在此一键设置昵称,即可参与社区互动!

*长度不超过10个汉字或20个英文字符,设置后3个月内不可修改。

*长度不超过10个汉字或20个英文字符,设置后3个月内不可修改。