(4.2)STM32中断系统

目录

1.中断基本概念

2.中断的意义

3.中断处理过程

4. 中断体系结构

5.NVIC

6.EXTI


 1.中断基本概念

在处理器中,中断相当于对于突发事件的处理过程。

当遇到内部/外部的紧急事件需要处理时,暂时中止当前程序,转而去处理紧急事件,

待处理完毕后,再返回被打断的程序继续向下运行。

(NVIC在内核里)

2.中断的意义

中断能够对突发事件进行及时处理,实现程序的并行化,进而提高CPU的工作效率。

//为什么提高效率了? 

        因为CPU对于没有发生的事情是在不停的在轮询(询问有没有发生?)

3.中断处理过程***

 示例:

1.看电影---正在执行的主程序

2.来电话---中断信号

3.暂停电影---压栈,把变量压进栈里

4.取快递---处理中断事件(中断处理函数)

5.继续看电影---出栈

中断处理过程:

 进入中断 

 处理器自动保存现场到堆栈里

 {PC, xPSR, R0-R3, R12, LR}

 一旦入栈结束,中断服务程序(ISR)便可开始执行

退出中断

 中断前的现场被自动从堆栈中恢复

 一旦出栈完成,继续执行被中断打断的指令

 出栈的过程也可被打断,使得随时可以响应新的中断而不再进行现场保存

         R0 - R12 

        R13  栈指针 SP       : 指向栈顶地址

        R14 链接寄存器 LR :存放返回地址

        R15 程序计数器 PC :保存要执行的指令地址

中断做多任务不可避免的

前后台系统

 

4. 中断体系结构

5.NVIC 

    嵌套向量中断控制器(Nested Vectored Interrupt Controller) 

    NVIC主要功能

     负责管理中断 (CPU的小助理)

     1)管理中断事件

     每一个中断事件都有执行或禁止两种状态,由NVIC负责将中断事件标记为清除和挂起两种状态。 

     (当多个中断事件同时到达时,NVIC会优先处理优先级更高的事件)

      (当中断执行完成时,NVIC会将中断事件置为清除状态)

  2)支持中断向量化处理

      当中断事件发生时,处理器会将PC置为中断事件入口函数的地址,进而跳转到中断服务程序去执行,这就是个中断(异常)向量,因为每一个异常源或者中断事件都会对应一个服务程序的入口地址,将这些地址按照优先级进行排布后,组成的一张表就称为中断(异常)向量表。

中断和异常向量表:存在FLASH里,本质是中断函数的地址,内核里面叫异常,内核外面叫中断

                                 有优先级,数越小越大,除此又可以编辑的

  Cortex-M0内核 可以处理15个内部异常和32个外部中断

 STM32G030 只使用了6个内部异常和28个外部中断

    3)支持中断嵌套 

          STM32的功能,与优先级有关

          3个固定的优先级,都是负值,不能改变。

          四个可编程优先级,用两个bit位表示,00,01,10,11 

          优先级数值越小,优先级等级越高。

       注意

      不同优先级的中断同时发生,优先处理优先级编号较小的那个

      同样优先级的中断同时发生,中断向量号较小的那个优先响应

6.EXTI

    外部事件/中断控制器

   主要功能:

       一个功能是产生中断,另一个功能就是产生事件。

产生中断的目的,是将信号送入NVIC,进而运行中断服务程序,实现对应功能,是软件级。

产生事件的目的,是将采集到的一个脉冲信号送到某个外设,进而驱动某些设备做出动作,是电路级别的传输,是硬件级的。

EXTI外部中断控制器EXTI

共28个中断线GPIO有16个中断线

 系统配置控制器SYSCFG

主要用于管理GPIO的外部中断

  结构框图:

       编号1是信号输入线,EXTI支持产生多达28个外部事件/中断请求。

编号2是边沿检测电路,用于监测上升沿或下降沿信号。

它会根据上升沿触发选择寄存(EXTI_RTSR)和下降沿触发选择寄存器(EXTI_FTSR)对应位的设置来控制信号触发。

边沿检测电路以输入线作为信号输入端,监测是否有边沿跳变,检测到有边沿跳变输出有效信号 1 给编号 3 电路,否则输出无效信号0。

编号3是一个或门电路,信号来源是外部事件或者软件中断/事件寄存器产生。

允许我们通过程序控制EXTI_SWIER就可以启动中断/事件线

编号4是一个与门电路,信号来源是编号3送来的信号和中断屏蔽寄存器的值,

如果中断屏蔽寄存器为0,也不会将信号送到NVIC,

只有编号3送来了中断信号且中断屏蔽寄存器允许产生中断,才会将中断信号送入NVIC.

接下来我们来看看红色虚线指示的电路流程。它是一个产生事件的线路,最终输出一个脉冲信号。

     产生事件线路是在编号3电路之后与中断线路有所不同,之前电路都是共用的。

编号5是一个与门电路,信号来源是编号3送来的信号和事件屏蔽寄存器的值,

如果事件屏蔽寄存器为0,不会将信号送到脉冲发生器,

只有编号3送来了信号且事件屏蔽寄存器允许产生事件,才会将信号送入脉冲发生器(编号6), 进而产生脉冲来控制外部设备做出动作。

这样我们可以简单的控制 EXTI_EMR 来实现是否要产生事件的目的

  • 0
    点赞
  • 1
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值