STM32学习笔记6——EXTI

本文最后更新于:2024年11月6日 晚上

0x00 Reference

0x05 EXTI

EXIT是外部中断事件控制器,包含20个产生事件/中断请求的边沿检测器,即总共:20条EXTI线(F1)

中断和事件的区别:

中断:要进入NVIC,有相应的中断服务函数,需要CPU处理

事件:不进入NVIC,仅用于内部硬件自动控制的,如:TIM、DMA、ADC

-1- EXTI工作原理

-2- EXTI寄存器

2-1 EXTI_RTSR

2-2 EXTI_FTSR

2-3 EXTI_IMR

2-4 EXTI_PR

-3- EXTI和IO映射关系

4.1 AFIO简介

Alternate Function IO,即复用功能IO,主要用于重映射和外部中断映射配置

  1. 调试IO配置
    AFIO_MAPR[26:24],配置JTAG/SWD的开关状态

  2. 重映射配置
    AFIO_MAPR,部分外设IO重映射配置

  3. 外部中断配置
    AFIO_EXTICR14,配置EXTI中断线015对应具体哪个IO口

特别注意:配置AFIO寄存器之前要使能AFIO时钟,方法如下:
__HAL_RCC_AFIO_CLK_ENABLE(); 对应RCC_APB2ENR寄存器 位0

4.2 EXTI 与 IO对应关系

AFIO_EXTICR1的 EXTI0[3:0]位控制(F1)

![image.png](D:\Project\blog\source_posts\study\Chapter+18+中断+22a79c76-a1cf-4b47-a9c0-fd93a3be9ac6\image 8.png)

Px0映射到EXTI0
Px1映射到EXTI1

Px14映射到EXTI14
Px15映射到EXTI15

例如

![image.png](D:\Project\blog\source_posts\study\Chapter+18+中断+22a79c76-a1cf-4b47-a9c0-fd93a3be9ac6\image 9.png)

五、 如何使用中断

![未知文件名](D:\Project\blog\source_posts\study\Chapter+18+中断+22a79c76-a1cf-4b47-a9c0-fd93a3be9ac6\未知文件名 5)

5.1 STM32 EXTI的配置步骤(GPIO外部中断)

  1. 使能GPIO时钟

  2. 设置GPIO输入模式
    上/下拉/浮空输入

  3. 使能AFIO/SYSCFG时钟
    设置AFIO/SYSCFG时钟开启寄存器

  4. 设置EXTI和IO对应关系
    选择PA~PK到底哪组IO对应EXTI输入线,AFIO_EXTICR/ SYSCFG_EXTICR

  5. 设置EXTI屏蔽,上/下沿
    选择PA~PK到底哪组IO对应EXTI输入线,AFIO_EXTICR/ SYSCFG_EXTICR

  6. 设置NVIC
    分3步,见前面内容,即:设置优先级分组、设置优先级、使能中断

  7. 设计中断服务函数 编写对应中断的中断服务函数!清中断标志!

注意:步骤2 - 5使用HAL_GPIO_Init一步到位

5.2 STM32 EXTI的HAL库设置步骤(外部中断)

  1. 使能GPIO时钟 __HAL_RCC_GPIOx_CLK_ENABLE

  2. GPIO/AFIO(SYSCFG)/EXTI HAL_GPIO_Init,一步到位

  3. 设置中断分组 HAL_NVIC_SetPriorityGrouping,此函数仅需设置一次!

  4. 设置中断优先级 HAL_NVIC_SetPriority

  5. 使能中断 HAL_NVIC_EnableIRQ

  6. 设计中断服务函数 EXTIx_IRQHandler,中断服务函数,清中断标志!

STM32仅有:EXTI0~4、EXTI9_5、EXTI15_10,7个外部中断服务函数

六、 通用外设驱动模型(四步法)

  1. 初始化 时钟设置、参数设置、IO设置、中断设置(开中断、设NVIC)(可选)

  2. 读函数(可选) 从外设读取数据(可选)

  3. 写函数(可选) 往外设写入数据(可选)

  4. 中断服务函数(可选) 往外设写入数据(可选)

七、 HAL库中断回调处理机制介绍

HAL库的中断回调处理异常复杂,大家知道大概原理即可,看你需要的部分即可!

![image.png](D:\Project\blog\source_posts\study\Chapter+18+中断+22a79c76-a1cf-4b47-a9c0-fd93a3be9ac6\image 10.png)


STM32学习笔记6——EXTI
https://goooforward.github.io/blog/2024/11/06/study/STM32学习笔记6——EXTI/
作者
tangyuwei
发布于
2024年11月6日
许可协议