中断系统概述

(一)STM32 中断系统概述


处理器中的中断
       在处理器中,中断是一个过程。即CPU正常执行程序的过程中,遇到外部/内部的紧急事件需要处理,暂时中止当前程序的执行,转而去为处理紧急的事件,待处理完毕后再返回被打断的程序处继续往下执行。中断在计算机多任务处理,尤其是即时系统中尤为重要。如uCOS,FreeRTOSD等。
意义:
       中断能提高CPU的效率,同时能对突发事件做出实时处理。实现程序的并行化,实现嵌入式系统进程之间的切换。


中断处理过程:

进入中断
1.处理器自动保存现场到堆栈里
2.{PC, xPSR, R0-R3, R12, LR}(保存现场当前执行CPU寄存器的值进行压栈处理)(栈保存临时数 据)程序走到哪个地方了(这个地址要保存)、状态参数,寄存器的值都要进行压栈处理
3.一旦入栈结束,ISR便可开始执行
4.晚到的中断会重新取ISR地址,但无需再次保存现场
退出中断
1.中断前的现场被自动从堆栈中恢复
2.一旦出栈完成,继续执行被中断打断的指令
3.出栈的过程也可被打断,使得随时可以响应新的中断,而不再进行
4.现场保存

NVIC嵌套向量中断控制器   为片内外设[串口、定时器、iic、EXIT(管理gpio)]的总管家

NVIC的主要功能
1.中断管理
2.支持异常及中断向量化处理
3.支持嵌套中断
中断管理
       Cortex-M0处理器中, 或者禁止,并且可以被设置为挂起状态或者清除状态。处理器的中断可以电平的形式的,也可以是脉冲形式的,这样中断控制器就可以处理任何中断源。

中断和异常向量表
STM32F0中断和异常向量

       Cortex-M0内核可以处理15个内部异常,和32个外部中断。
       STM32F051实际上只使用了6个内部异常和28个外部中断。
       当异常或中断发生时,处理器会把PC设置为一个特定的地址,这一地址就称为异常向量。每一类异常源都应对一个特定的入口地址,这些地址按照优先级排列以后就组成一张异常向量表。
向量化处理中断的好处
       统的处理方式需要软件去完成。采用向量表处理异常,M0处理器会从存储器的向量表中,自动定位异常的程序入口。从发生异常到异常的处理中间的时间被缩短。
注:中断和异常的区别:
       中断是微处理器外部发送的,通过中断通道送入处理器内部,一般是硬件引起的,比如串口接收中断,而异常通常是微处理器内部发生的,大多是由软件引起的,比如除法出错异常,特权调用异常等待。不管是中断还是异常,微处理器通常都有相对应的中断/异常服务程序。

嵌套中断
STM32F0中断的优先级:
1.3个固定的优先级,都是负值,不能改变
2.四个可编程优先级,用两个bit位表示,00,01,10,11
3.优先级越小优先级越高
注:不同优先级的中断同时发生,优先处理优先级编号较小的那个,同样优先级的中断同时发生,中断向量号较小的那个优先响应。

(二)外部中断控制器EXTI

在STM32F05x中,共有最多28中断、事件线可用:
GPIO口连接到16个外部中断/事件线


 

  

你可能感兴趣的:(中断系统概述)