STM32 EXTI(外部中断)

Posted 一只小阿大嗷

tags:

篇首语:本文由小常识网(cha138.com)小编为大家整理,主要介绍了STM32 EXTI(外部中断)相关的知识,希望对你有一定的参考价值。

中断是什么?

例:在公司上班打代码,然后经理打电话过去谈话,谈话到一半,老婆打电话要去医院,然后回来医院继续谈话,然后继续工作打代码。

打断原来做的事情 -> 打断工作
保留现场 -> 保留工作进度
处理中断 -> 谈话
回到现场 -> 继续工作

如何配置中断

1.初始化原来中断的GPIO口

2.初始化EXTI(什么是EXTI?)
边沿检测电路 -> 上升沿/下降沿触发中断

3.配置NVIC(中断优先级)
配置中断的优先级,中断嵌套

4.编写中断服务函数
在这里插入图片描述
在这里插入图片描述
在这里插入图片描述

EXTI 初始化结构体
 typedef struct {
 uint32_t EXTI_Line; // 中断/事件线
 EXTIMode_TypeDef EXTI_Mode; // EXTI 模式
 EXTITrigger_TypeDef EXTI_Trigger; // 触发类型
 FunctionalState EXTI_LineCmd; // EXTI 使能
 } EXTI_InitTypeDef;
  1. EXTI_Line:EXTI中断/事件线选择,可选 EXTI0 至 EXTI19
  2. EXTI_Mode:EXTI 模式选择,可选为产生中断(EXTI_Mode_Interrupt)或者产生事件(EXTI_Mode_Event)。
  3. EXTI_Trigger:EXTI 边沿触发事件,可选上升沿触发(EXTI_Trigger_Rising)、下降沿触发 (EXTI_Trigger_Falling) 或者上升沿和下降沿都触发
  4. ( EXTI_Trigger_Rising_Falling)。 EXTI_LineCmd:控制是否使能 EXTI 线,可选使能 EXTI线(ENABLE)或禁用 (DISABLE)。
    在这里插入图片描述
NVIC 初始化结构体
typedef struct
{
  uint8_t NVIC_IRQChannel;                   //设置中断通道
  uint8_t NVIC_IRQChannelPreemptionPriority; //设置抢占优先级
  uint8_t NVIC_IRQChannelSubPriority;		 //设置响应优先级
  FunctionalState NVIC_IRQChannelCmd;		 //设置是否使能或禁用
} NVIC_InitTypeDef;

在这里插入图片描述
本文章是学习笔记,部分内容转载自https://blog.csdn.net/zxh1592000/article/details/80280715
此文章讲的非常详细。

以上是关于STM32 EXTI(外部中断)的主要内容,如果未能解决你的问题,请参考以下文章

STM32中断函数

STM32F103VET6基于STM32CubeMX创建EXTI外部中断工程

《零死角玩转STM32》-17-EXTI外部中断/事件控制器

STM32的外部中断问题

STM32入门笔记——外部中断EXTI

STM32入门笔记——外部中断EXTI