当前位置:   article > 正文

STM32中断配置_中断模式设置

中断模式设置

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

声明:本文内容由网友自发贡献,不代表【wpsshop博客】立场,版权归原作者所有,本站不承担相应法律责任。如您发现有侵权的内容,请联系我们。转载请注明出处:https://www.wpsshop.cn/w/盐析白兔/article/detail/973204
推荐阅读
相关标签
  

闽ICP备14008679号