前言 好烦,想把keil里面的中断换到ide里面,跟着操作一遍看回来再设置就脑子,缠绕起来了,还是得把要操作的给记录一下方便自己操作
一、ide操作
1先选择外部中断的引脚:PA0--EXTI0是否下拉可以简化我们的外界按键电路
2 NVIC的0线开启NVIC
3 中断发生什么:
找到后缀 it 的文件,也就是中断相关函数。 下翻最下面找到中断函数,自行编辑
(4 按键防抖)
简单,就是延时后再判断是否按下
但引发问题就是:HAL_DELAY 它依靠另一个系统中断:sys tick,而它中断优先级低于所写的中断函数,那么:
5 优先级设置
回到nvic即可
二、对应原理:1、
上下沿是我们ide里面选择的触发方式
请求挂起是检测到后,它检测哪个触发输入了就把哪一位置1
中断屏蔽寄存器是我们 选择的 EXTI0----------------那么ide就把中断屏蔽的0位给置1,
那么只有当,上两者都为1,才可以进入NVIC中断
2、NVIC 嵌套向量中断控制器
NVIC来 进行所写的函数操作
(注意:下面这个函数ide自动生成了)
这里是让请求挂起的,置1位给落下了,否则nvic会一直执行IRQHandler的(key1-pin就是我们设置-pin)
三、 如果是两个中断函数呢?
那么中断是有两个优先级的:抢占和响应
先比较抢占,再比较响应
我们被分有4位来分配两种优先级,因为主要看抢占
所以默认四位都是抢占(也是再nvic里面)