STM32 EXTI(外部中断)

目录

中断是什么?

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

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

如何配置中断

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

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

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

4.编写中断服务函数
STM32 EXTI(外部中断)
STM32 EXTI(外部中断)
STM32 EXTI(外部中断)

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)。
    STM32 EXTI(外部中断)
NVIC 初始化结构体
typedef struct
{
  uint8_t NVIC_IRQChannel;                   //设置中断通道
  uint8_t NVIC_IRQChannelPreemptionPriority; //设置抢占优先级
  uint8_t NVIC_IRQChannelSubPriority;		 //设置响应优先级
  FunctionalState NVIC_IRQChannelCmd;		 //设置是否使能或禁用
} NVIC_InitTypeDef;

STM32 EXTI(外部中断)
本文章是学习笔记,部分内容转载自https://blog.csdn.net/zxh1592000/article/details/80280715
此文章讲的非常详细。

上一篇:3-element-from 表单验证


下一篇:特殊存储过程——触发器Trigger