helllo,小伙伴们,大家好。这里是左左右。这期视频我们讲EXTI外部中断。首先,讲一下什么是中断。中断是一种硬件机制,允许单片机在执行主程序的过程中,暂停当前任务,优先响应和处理某些紧急或特定事件,处理完成后自动恢复原任务继续执行。举个简单的例子,让大家理解起来更容易些。
假设你今天要休息,计划一整天都用来刷我的视频,中途你女朋友打来电话你总要接吧。这时你就暂停视频去接女朋友电话了。接电话就是一个中断,刷我的视频就是主程序中的任务。当你接完电话你还要从刚才视频暂停的地方继续刷吧,就相当于是处理完中断回到主程序继续执行原来的任务。中断的种类有很多,这么多的中断总有个轻重缓急。
所以,引出中断优先级这个概念。当有多个中断源同时申请中断时优先级决定了哪个中断会被优先处理,优先级中又包含了抢占优先级,和响应优先级。还是刚才的例子,这里的你假如是一个海王。在接女朋友电话过程中还有许多女性朋友打来电话,这里用甲乙丙来代替她们。在挂断女朋友电话后,她们在你心里总有个排名吧。

你就按这个排名按顺序给她们回了电话。这里的排名就是响应优先级。数字越小代表优先等级越高,还有一种情况是在你和女朋友打电话过程中,这时打来的电话中有一位比你女朋友更加重要。还没等你女朋友说完你就迅速挂断电话。接了这位在你看来更重要的电话,这时她的抢占优先级就高于你的女朋友。

当和她聊完,再回去给你女朋友打电话继续刚才没结束的对话。这就是中断的嵌套。这时抢占优先级和响应优先级就并不难理解了。“抢占”这个词更加强势。抢占优先级更高的是可以打断正在进行的中断,而“响应”这个词就有点随遇而安的感觉了。所以,它只能优先排队,而不能打断中断。假如你属于王中王级别的,有特别多的女性朋友。
关于他们的抢占优先级和响应优先级排名你也记不住。这时就产生了一个叫NVIC的小助手来管理中断。该挂断谁的电话,该优先回复谁的电话这些都由NVIC来做。你只管聊天就行。NVIC的中断优先级由优先级寄存器的四位决定。四位可以分为两组,分别代表抢占优先级和响应优先级。按之前我们学过的8421,四位二进制可以代表0-15。

三位二进制可以代表0-7,二位二进制可以代表0-3。一位二进制可以代表0-1。结合之前的视频,这个动画应该是很容易理解的。NVIC一共分为5组,这时里面的取值就一目了然了。为了让大家对抢占优先级和响应优先级有一个更准确的认知,我们还是用刚才这个例子,用NVIC分组2来对抢占优先级和响应优先级进行分组,也就是这两个优先级的取值只能是0到3。
值越小优先级就越高。抢占优先级(Preemption Priority)和响应优先级(Subpriority)的分组(Priority Grouping)通常建议只配置一次,虽然技术上可以实现修改,但不建议怎么做。
接下来我们将女朋友和甲乙丙来分配优先级。因为女朋友这个中断是先进来的,这时其他中断还没触发。接着,甲这个中断过来了,由于它的抢占优先级没有女朋友高。只能在后面排队。然后,是乙这个中断过来了,由于它的抢占优先级也没有女朋友高。也只能在后面排队。乙的抢占优先级和甲的相同,但是响应优先级要比甲高,虽然来得晚。

但排队还是排在甲的前面。最后,是丙的中断过来了,由于它的抢占优先级比女朋友高。它是可以打断女朋友这个中断的,所以,这几个中断的先后顺序就是这样的。其实,这里的海王就是我们的cpu。刷视频是我们主程序中的任务,而这些甲乙丙就是各种类型的中断。不知道这样讲是否有助于大家的理解?
我们接着讲EXTI(Extern Interrupt)外部中断,它是stm32众多中断之一,相当于stm32众多女性朋友之一。EXTI是指当指定GPIO口产生电平变化时,EXTI向NVIC申请中断。这里的电平变化是指中断触发的方式:包括上升沿/下降沿/双边沿/软件触发。

学过之前视频的小伙伴知道高低电平的变化是可以形成方波信号的。这里低电平转变为高电平就是上升沿。同理这里就是下降沿,上升沿和下降沿同时检测就是双边沿。软件触发不是我们这期视频的重点, 我们不做讲解。这里有一点需要注意。PA0,PB0,PC0只可以选择其中的一个作为中断引脚,也就是对应EXTI0这个中断。
就是说选择了PA0作为中断引脚就不能选PB0或者PC0了。同理PA1,PB1,PC1只可以选择其中的一个作为中断引脚,也就是EXTI1这个中断。以此类推。中断的触发方式包括中断响应和事件响应。这里的中断响应是通向我们的cpu的,而事件响应是通向其他外设,事件响应不是我们这期视频的重点。
大家有个了解就可以了。好的 今天的视频就到这里了。如果觉得视频讲的还不错就赏个赞吧。您的点赞、收藏、和关注是我持续更新下去的最大动力。我们下期见。