金牌会员
- 积分
- 1027
- 金钱
- 1027
- 注册时间
- 2019-5-27
- 在线时间
- 142 小时
|
嘿嘿,这个视频算是我看的最轻松的几次了,只要你知道中断是什么(这个在我以前的帖子里面有),这节课的知识根本不惧。
首先我说一下,中断优先级管理又叫NVIC(我丫的一开始还以为是两个不同的东西,所以提醒你们一下),那什么是中断优先级管理?中断优先级管理又有什么用呢?
顾名思义,中断优先级管理就是设置中断的执行顺序的管理体系。我们的程序在运行的时候往往会碰到两个中断同时被触发的情况,这个时候怎么办?对,中断优先级管理就是用在这个时候,它会按照你之前给每个中断设置的优先级来对中断排序。这样你就不用担心两个中断发生冲突了。中断优先级管理是针对多个中断可能会发生冲突时的功能当然啦,你要是整个程序里面只有一个中断,这个NVIC就没有用啦!
中断优先级管理分为抢占优先级和响应优先级(又叫子优先级)两个方面的设置(也就是说一个中断需要对这两个优先级都进行设定),那我们来解释一下这两个的定义。
抢占优先级这个名字一听就很霸气,所以它真的很霸气,中断发生时要先对它进行判定,抢占优先级高的会先执行,甚至它霸气到别的中断正在执行,只要抢占优先级比它低,它就可以打断别的中断,执行它自己的程序;当抢占优先级的等级一样的时候,系统再判断响应优先级,同理,响应优先级高的先执行,但是它不霸气,所以别的中断在执行时,就算它的等级高,也得等别的中断执行完再执行。响应优先级的特点引出了两个函数,分别是挂起中断和解挂中断。
那么挂起中断和解挂中断这两个函数有什么用处呢?
当中断在等待别的中断执行的时候,总不能瞎转悠吧,于是咱们就调用挂起中断函数将这个中断挂起(相当于一个休息室),等到刚刚那个中断完成了,咱们再调用解挂中断函数将这个
在“休息”的中断放出休息室,让它被执行。
注意:优先级的值越小(优先级有0、1、2、3、4五个等级),优先级越高。
我在网上找到了一个非常通俗易懂的说法,我小改了一下,一看就懂,贼厉害!
好比一个课堂上,有多个同学要问问题,那就要举手(发生中断,但是有好几个),老师看到了,但只能先点一个同学的名字,同学们的年龄有大有小,老师当然是照顾年龄小的同学(优先级的值越小,优先级越高),让这个同学站起来阐述他的问题(处理中断),这个同学说完问题坐下来就不用举手了(中断执行 )。但其他同学在这个过程手必须举着,这时他们的状态就是“挂起”(执行了挂起中断函数),等刚刚那个同学说完问题坐下来,老师就可以点他们的名字了(处理被挂起的中断,就是解挂)
|
|