STM32: 2.外部中断exti

2.1中断的作用和执行过程

2.1.1中断的作用

        中断一般是由硬件(如外设和外部输入引脚)产生的事件,它会引起程序流偏离正常的流程(如给外设提供服务),转去执行其他的流程

        提高实时性: 中断允许单片机在特定事件发生时立即响应, 而无需持续轮询状态. 这大大提高了系统的实时性, 确保及时处理外部事件和设备请求
        降低资源占用, 通过使用中断, 单片机可以在需要时才处理指定任务, 而不是持续检查设备和输入状态, 这降低了系统资源的占用. 使单片机能够更有效地执行其他任务
简化程序结构: 中断使得开发者能够将事件处理逻辑分离, 编写简单, 清晰的代码. 这有助于提高程序的可维护性和可读性
        支持多任务处理: 中断机制使得单片机能够在同一事件处理多个任务. 通过合理分配中断优先级, 可以确保紧急任务优先执行, 提高系统的整体效率
        动态事件响应:中断可以根据事件发生的条件动态地执行不同的处理函数. 这使得系统能够根据实际需求灵活地响应时间, 提高系统的适应性和鲁棒性
        省电优势: 当没有外部事件发生时, 单片机可以进入低功耗模式, 降低功耗. 当时间发生时, 中断机制能够立即唤醒单片机进行处理. 这在许多低功耗应用场景中具有显著优势
        平衡性能和功耗:通过合理配置中断, 开发者可以在系统性能和功耗之间实现平衡. 这对于需要在有限资源下实现高性能运算的嵌入式系统尤为重要

 

2.1.2中断的执行过程

        1、外设发出中断请求

        2、处理器暂停当前执行的任务,保护现场,将当前位置的PC地址压栈;

        3、程序跳转到中断服务程序,执行中断服务程序;

        4、恢复现场,将栈顶的值回送给PC;

        5、跳转到被中断的位置开始执行下一个指令

        中断服务函数:相对于正常子函数,中断服务函数有以下需要注意的地方:

        1、中断服务函数不能传入参数;

        2、中断服务函数不能有返回值;

        3、中断服务函数应该做到短小精悍,快入快出,禁止延时性的过程。

        4、不要在中断函数中使用printf函数,会带来重入和性能问题。

        中断重入:就是在一个中断程序执行过程中又被另一个中断打断,转而又去执行另一个中断程序。

2.2外部中断exti

2.2.1

外部中断exti向量表
位置优先级优先级类型名称说明地址
613可设置EXTI0EXTI线0中断0x0000_0058
714可设置EXTI1EXTI线1中断0x0000_005C
815可设置EXTI2EXTI线2中断0x0000_0060
916可设置EXTI3EXTI线3中断0x0000_0064
1017可设置EXTI4EXTI线4中断0x0000_0068
23 30可设置EXTI9_5EXTI线[9:5]中断0x0000_009C
4047可设置EXTI15_10EXTI线[15:10]中断0x0000_00E0

        EXTI外部中断 可以监测指定GPIO口的电平信号,当其指定的GPIO口产生平变化时,EXTI将立即向NVIC发出中断申请,经过NVIC裁决后中断CPU主程序,使CPU执行EXTI对应的中断程序。

2.2.2外部中断内部框图以及外部中断线路映像

        边沿检测电路+软件中断事件寄存器:这个几个进行或门输出,便可以实现“上升沿/下降沿/双边沿/软件触发”这四种触发方式。
        请求挂起寄存器:相当于一个中断标志位,通过读取该寄存器可以判断是哪个通道触发的中断。
        中断屏蔽寄存器/事件屏蔽寄存器:相当于开关,只有置1,中断信号才能继续向左走。
        脉冲发生器:产生一个电平脉冲,用于触发其他外设的动作。

2.2.3外部中断线路映像

 2.3外部中断EXTI的配置过程

        1、配置要中断检测的IO引脚模式为:浮空输入模式,具体查阅参考手册8.1.11以及自己的硬件电路来设置

        2、把要中断检测的IO引脚映射到对应的EXTI中断线上,通过AFIO来设置

        3、配置对应的EXTI中断线,触发的边沿、使能屏蔽位

        4、通过NVIC配置EXTI中断的优先级、使能NVIC的EXTI中断

        5、编写中断服务函数:函数名、清中断等等

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

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

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

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值