嵌套向量中断中断的概念•CPU正在执行程序时,单片机外部或内部发生的某一事件,请求CPU迅速去处理。•CPU暂时中止当前的工作,转到中断服务处理程序处理所发生的事件。•处理完该事件后,再回到原来被中止的地方,继续原来的工作,这称为中断。•CPU处理事件的过程,称为CPU的中断响应过程。执行主程序主程序继续执行主程序中断请求中断响应执行中断处理程序中断返回对事件的整个处理过程,称为中断处理(或中断服务,ISR)。中断方式优点:大大地提高了CPU的工作效率。能够实现中断处理功能的部件称为中断系统1.能实现中断响应、中断处理(服务)、中断返回和中断屏蔽。这是中断系统最基本的功能。2.能实现中断优先级管理。即当有多个中断源同时申请中断时,CPU能够优先响应最紧急的中断申请。3.能实现中断嵌套。即当CPU正在为优先级较低的中断源服务时,具有较高优先级的中断源提出中断申请,此时中断系统应当允许较高优先级的中断源中断较低优先级的中断源,待较高优先级的中断处理完成后,再接着处理较低优先级的中断。这种中断服务程序再被中断的过程称为中断嵌套。一般的中断系统应能够处理多级中断嵌套中断系统需要解决的问题:产生中断的请求源称为中断请求源。常见的中断源有:–一般的I/O设备,如键盘、打印设备。–数据通道中断源,如AD等。–实时时钟。–故障源中断源向CPU提出的处理请求,称为中断请求(或中断申请)。进入中断→保护现场→中断处理恢复现场→中断返回首先,CPU应收到一个可靠的中断请求信号,且该中断请求信号应一直保持到它被响应为止。如果中断请求信号中途撤销,则CPU将不再响应。其次,在中断请求的同时,没有更高级的请求信号发生。如果它们同时发生,CPU将先处理优先级别较高的请求。第三,CPU内部应处在开中断(允许中断)状态。第四,CPU至少要在当前指令执行完成时才可能响应中断。异常/中断系统异常是Cortex-M3内核自带的一些异常,比如复位、总线Fault和SysTick等等外设中断是指制造CPU的厂家加入的,比如串口、定时器中断等等异常和中断都可以“中断”正常执行的代码流区别在于:异常是Cortex-M3内核产生的“中断”信号,在执行指令或访问存储器时产生的,对Cortex-M3内核来说是“同步”的而中断是Cortex-M3内核外部(片上外设或外部中断信号)产生的“中断”信号中断请求信号一般来自内核的外部——片上外设或外扩的设备等,对Cortex-M3内核来说是“异步”的。NVIC(NestedVectoredInterruptController)Cortex-M3处理器在内核水平上搭载了一个中断控制器——嵌套向量中断控制器NVIC功能:1.可嵌套中断支持所有异常都可被赋予不同的优先级,当前异常的优先级被存储在特殊功能寄存器PSRs的专用字段中,当一个新的异常发生时,硬件会自动进行优先级比较,若发现最新异常的优先级较高,处理器则会中断当前的服务例程(或者——是普通程序),而响应新来的异常即抢占了低优先级异常。NVIC功能2.向量中断支持当开始响应一个中断后,Cortex-M3会自动定位一张向量表,根据中断号从表中找出相应中断的入口地址,然后跳转过去执行3.动态优先级调整支持优先级在中断运行期间可以通过软件进行修改。在中断服务例程执行完成前,中断是被锁定的,无法进行深度激活,避免了意外重入的风险。4.中断延迟大大缩短Cortex-M3为了缩短中断延迟,引入了多个新特性。包括中断“”“”现场的自动保护与恢复,咬尾中断和晚到中断机制的支持5中断可屏蔽通过设置BASEPRI、PRIMASK和FAULTMASK等寄存器,既可屏蔽优先级低于某个阈值的中断,也可以屏蔽所有中断,保证时间关键的任务能在最后期限前完成。异常类型Cortex-M3在内核水平上搭载了一个异常响应系统,支持11种系统异常和240个外部中断输入,如表2.9所列。其中,编号1~15对应的是系统异常,大于等于16的则全是外部中断。除了个别异常有固定的优先级外,其它异常的优先级都是可编程的。系统异常和外部中断通过不同的寄存器组进行控制。系统异常是Cortex-M3内核支持的基本异常,与具体的芯片无关,而外部中断则是与芯片相关的,芯片厂商会根据需要和用途设计中断源数目(1-240)和优先级的...