STM32中断配置

本文详细介绍了STM32嵌套向量中断控制器NVIC的工作原理,包括中断响应机制、NVIC寄存器结构、中断向量表、优先级管理以及EXTI的配置流程,涉及GPIO的时钟配置、AFIO重映射和中断服务函数的设计。
摘要由CSDN通过智能技术生成

一,NVIC

1.1.1NVIC定义

NVIC属于内核设备,翻译为嵌套向量中断控制器,在stm32全系列中最多有256个中断由NVIC配置,并允许裁剪,因此每个型号的中断数与优先级数各不相同。

1.1.2NVIC工作原理

当外部中断响应时,通过第一层判断(是/否使能该中断)来判断是否让该中断进入NVIC,此后进入IPR来获取中断优先级,其中AIRCR是一个将IPR前4位标志位进行分组的寄存器(stm32只用到了IDR寄存器的前四位);如果是内核产生的中断,则进入SHPR寄存器进行获取优先级,再读取AIRCR判断分组。

1.1.3NVIC寄存器

ISER与ICER都是共32*8个位,每一个位控制一个中断,AIRCR的8-10位控制分组,IPR的240个寄存器对应着240个外部中断,但stm32只使用了前4位。

1.1.4中断向量表

如图,当中断进入NVIC时会寻找对应的中断服务函数。

1.1.5优先级概念

其中自然优先级是可以在中断向量表中查询的。

1.1.6优先级标志位

二,EXTI

2.1.1EXTI叙述

中断是一种发生了要进入NVIC的情况,则会将cpu调用,而事件是不进入NVIC的情况,会使硬件发生变化,通常也会伴随则是否使用中断的寄存器标志位。

20条EXTI线对应着20种事件与中断,其中图上缺乏以太网唤醒事件。

EXTI可以配置如上图所示,其中软件触发是通过软件更改寄存器的操作。只有将EXTI配置成功,对应的外部中断才能通过NVIC调用函数。

2.2.1 AFIO的重映射

如果需要使用EXTI外部中断需要将GPIO的重映射功能开启,既AFIO。

使能AFIO的函数定义在HAL库中的GPIO.C中

开启复用功能后需要判断是哪一个EXTI线产生了外部中断,以上寄存器共有4个,可配置的EXTI线共有4*4个,每4位为1组,通过不同的位控制来自于哪组GPIO。

三,中断配置流程

3.1.1EXTI的配置步骤

首先:使能GPIO的时钟

其次:通过GPIO初始化函数将GPIO模式,AFIO映射,时钟,屏蔽全部配置好

最后:设置NVIC的分组,中断优先级,并且使能

配置完毕后,要设置中断服务函数,终端服务函数的过程如下。

首先要设计一个中断服务函数(顾名思义,产生了何种中断,CPU会进入到终端服务函数中进行处理)

其次终端服务函数中要包含HAL库的中断共用处理函数(所谓公用,既例如所有的外部中断函数都适用于这个函数,函数的参数为GPIO_PINX,进入函数会检测是否该PIN产生了外部中断挂起位,挂起后,会执行回调函数,并软件清除中断标志位

最后进入回调函数,回调函数在公用函数中被引用,并且是_weak弱定义,因此可以在使用它的地方将其内部重新定义为用户所需要的函数。并且可以设计多个中断服务函数,进入公用函数后进入回调函数,再在回调函数中进行逻辑判断,对应相应的中断,执行操作。

  • 5
    点赞
  • 6
    收藏
    觉得还不错? 一键收藏
  • 1
    评论
评论 1
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值