中断(NVIC)
1.1 中断基本组成:
断点:中断事件产生的时间点—压栈,出栈
中断源:中断事件
中断服务函数:
-
无返回值,无传参,void xxxx(void)
-
快进快出
-
避免while(1)
-
不可写printf(),但是调试程序时,可以。
-
不可调用,不可声明
1.2 单片机异常
中断向量:中断服务程序的入口地址。
中断向量表:当中断来临的时候,首先取向量,每个中断的中断向量不一样,然后根据向量查询中断向量表,根据里面的地址找到中断服务函数,从而实现整个中断的响应过程。
1.3 框图
产生中断必须先配置中断线,通过映射的方式将通用I/O口连接到外部中断线/事件线上
1.4 中断优先级分组
中断嵌套:当发生一个中断时,又来了一个中断
中断优先级:数字越小,优先级越高
抢占优先级:高优先级可以打断低优先级
次级优先级:高优先级不可以打断低优先级----同时到时,先执行优先级高的
抢占优先级 次级优先级
任务 1 1 5
任务 2 1 3
任务 3 3 2
Eg: 任务1和任务3同时到时,先执行任务1;
任务1和任务2同时到时,先执行任务2;
任务1执行时,任务2到了,执行任务1;
NVIC控制器:按照优先级开辟CPU资源
先执行任务2;
任务1执行时,任务2到了,执行任务1;
NVIC控制器:按照优先级开辟CPU资源
就是从中断向量表内找到中断服务函数的入口地址;