https://www.bilibili.com/opus/559173998573672049
定义
NVIC(Nested Vector Interrupt Controller):就是嵌套向量中断控制器。
向量:中断以向量表的形式进行管理,每个ISR的入口地址占据四个字节空间,有序排列在向量表中。
控制器:对中断机制进行管理,一个中断有四个基本控制操作:
使能(enable)——允许中断
失能(或称:除能,disable)——禁止中断
挂起(set-pending)——等待处理中断
解挂(clear-pending)——停止挂起转而处理中断。
NVIC为每个中断,提供四个bit(分布在四个寄存器中)以控制四种操作,bit置位则启动控制操作,bit清零没有效果不产生任何操作。
函数
设置中断的优先级:NVIC_SetPriority(IRQn, priority)
IRQn 用来指定中断源:当IRQn<0时,设置的是内核中断;当IRQn>=0时,配置的是外部中断的优先级;
priority指定优先级:值越高优先级越小;
设置中断处理函数:NVIC_SetVector,允许在运行时动态修改中断服务函数的地址
设置中断优先级:NVIC_SetPriority
使能中断:NVIC_EnableIRQ
使用
中断初始化NVIC_SetVector(IRQn,vector);//注册终端号对应的中断处理函数NVIC_SetPriority(IRQn, priority);//设置中断优先级NVIC_EnableIRQ(IRQn);//使能中断
中断处理NVIC_DisableIRQ//禁止NVIC_ClearPendingIRQ//解挂处理中断.....中断实际处理NVIC_EnableIRQ//处理完重新使能等待