STM32HAL库学习笔记四——中断

中断与HAL库配置


文章目录

  • 中断与HAL库配置
  • 中断基本知识
    • 一、中断是什么?
      • 1.中断相关名词
      • 2.NVIC (嵌套向量中断控制器)
      • 3.中断程序执行流程
      • 4.CubeMX如何配置中断
    • 二、EXIT外部中断/事件控制器
      • 1.什么是EXIT
      • 2.EXTI中断/事件线
      • 3.外部中断实验
      • 4.外部中断与GPIO输入的区别


中断基本知识


`

一、中断是什么?

中断是指当系统程序运行中出现某意外情况时,会暂停当前程序的运行,转而执行需要处理的新程序,完成后再返回原程序继续执行的过程。

1.中断相关名词

中断向量:指向对应中断服务函数的入口地址
中断向量表:把所有中断向量按照编号排序存储在一起的区域
中断服务函数:中断发生后,系统跳转执行的程序
中断优先级:决定中断发生先后的指标
中断通道:传递、处理中断的信息通道,一个中断通道可以对应多个中断源
中断源:引起中断的信号来源

2.NVIC (嵌套向量中断控制器)

NVIC作为内核的一部分,管理了所有的中断和异常,为中断和异常分配中断通道

3.中断程序执行流程

1.外部中断触发,系统进入中断
2.保存现场
3.分析中断进入中断向量表
4.跳转执行中断服务函数
5.恢复现场

对于Cortex-M3架构,保存现场、分析中断、跳转、恢复现场等工作都是由硬件完成的。

4.CubeMX如何配置中断

1.配置中断源,中断优先级
对于HAL库,中断初始化配置代码生成在MX_GPIO_Init();里,包括中断优先级的配置和中断使能。
2.使能中断
CubeMX中的配置

3.编写中断服务函数
对于HAL库,中断服务函数写在stm32f1xx_it.c文件里,执行中断服务函数的过程包括中断标志位的判断,标志位清理,回调函数调用。用户主要通过编写回调函数来实现需求。

二、EXIT外部中断/事件控制器

1.什么是EXIT

EXIT管理了控制器的 20 个中断/事件线。每个中断/事件线都对应有一个边沿检测器,可以实现输入信号的上升沿检测和下降沿的检测。EXTI 可以实现对每个中断/事件线进行单独配置,可以单独配置为中断或者事件,以及触发事件的属性。
产生中断线路目的是把输入信号输入到 NVIC,进一步会运行中断服务函数,实现功能,这样是软件级的。
而产生事件线路目的就是传输一个脉冲信号给其他外设使用,并且是电路级别的信号传输,属于硬件级的。

2.EXTI中断/事件线

EXTI0 至 EXTI15 用于 GPIO编程,可以让任意一个GPIO成为中断源,其中尾号相同的对应一条中断线,如:PA0~PH0对应EXTI0中断线。

不同的中断线可能对应同一个中断通道:
EXTI0至EXTI4分别具有独立的中断通道;
EXTI5至EXTI9共享一个中断通道;
EXTI10至EXTI15共享一个中断通道。

3.外部中断实验

实验过程

  1. 初始化用来产生中断的 GPIO,选择GPIO模式;
  2. 初始化 EXTI,配置触发方式;
  3. 配置 NVIC,使能中断通道;
  4. 编写中断服务函数(主要改写回调函数)。
//回调函数,中断触发LED灯电平翻转
void HAL_GPIO_EXTI_Callback(uint16_t GPIO_Pin)
{
	if(GPIO_Pin == GPIO_PIN_13)
	{
		HAL_GPIO_TogglePin(GPIOB,GPIO_PIN_5);
	}
	if(GPIO_Pin == GPIO_PIN_0)
	{
		HAL_GPIO_TogglePin(GPIOB,GPIO_PIN_1);
	}
}

4.外部中断与GPIO输入的区别

在学习过程中,有做过GPIO输入按键检查的实验和EXTI中断实验。二者都实现了按键按下LED灯亮灭的效果,那么这两者有什么区别呢?
前者利用GPIO对电平的判断,软件控制其他外设的工作,在按键输入的过程中不涉及中断,但要考虑是否需要软件消抖,按键是否按下未放开的问题;

按键机械触点断开、闭合时,由于触点的弹性作用,按键开关不会马上稳定接通或一下子断开,使用按键时会产生带波纹信号,需要用软件消抖处理滤波,不方便输入检测。STM32f103VE实验板连接的按键带硬件消抖功能,它利用电容充放电的延时,消除了波纹,从而简化软件的处理,软件只需要直接检测引脚的电平即可。
引用自野火STM32HAL库开发指南

后者使用了单片机的EXTI中断机制,按键按下产生电平变化,系统检查到上升沿或者下降沿触发中断,执行中断服务函数,不需要考虑消抖以及按下未放开的问题。

你可能感兴趣的:(笔记,stm32,单片机,arm)