中断的基本概念
在处理器中,中断是一个过程,即CPU正常执行程序的过程中,遇到外部或者内部的紧急时间需要处理,暂时终止当前程序的执行,转而去为处理紧急的时间,待处理完毕后再返回被打断的程序出继续往下执行。
中断在计算机多任务处理,尤其是即时系统中尤为重要,比如uCOS , FreeRTOS等。
总结:程序正常执行,收到中断请求,压栈保护现场,跳转到中断处理程序,处理完成出栈恢复现场,跳转回主程序中断处继续执行。
意义:
中断能提高CPU效率(但紧急事件频繁发生时还是轮询方式效率高),同时能突发事件做出实时处理。实现程序的并行化,实现嵌入式系统进程之间的转换。
由内核CORTEX - M0产生的中断一般称之为异常(一般由软件产生),片内外设产生的中断就叫做中断(一般由硬件产后),但他们都算是中断。
NVIC嵌套向量中断控制器:由他总管中断并判断中断类型发送给内核。
串口、定时器等片内外设分别管理自己对应的中断请求,最终发送给NVIC。
NVIC的主要功能
NVIC不是一个寄存器是一组。
1、中断管理:Cortex - M0处理器中,每个外部中断都可以被使能或者禁止,并且可以被设置为挂起状态(稍后处理)或者清除状态(已经处理完成)。处理器的中断可以是点评的形式,也可以是脉冲的形式,这样中断控制器就可以处理任何中断源。
2、支持异常及中断向量化处理:异常化向量处理中断的好处 ,M0处理器会从存储器的此昂量表中,自动定位异常的程序入口。从发生异常到异常的处理中间的时间被缩短。(直接在异常向量表中读取到异常的地址,不需要再去判断异常种类)
3、支持嵌套中断:
STM32F0中断优先级:3个固定的优先级,都是负值,不能改变。(异常编号值越小优先级越高)
四个可编程优先级,用两个bit位表示,00, 01, 10,11
优先级通过IPR配置
中断和事件的区别:事件一般是产生一个信号,这个信号可以触发CPU的一些功能,例如在CPU睡眠的时候对CPU进行唤醒;中断一般是有一个固定的中断处理函数入口,有一个固定的中断处理函数。