[STM32L5] 【STM32L562E-DK测评活动】by clever:02-外部中断检测

[复制链接]
1588|0
 楼主| 聪聪哥哥 发表于 2025-2-26 09:38 | 显示全部楼层 |阅读模式
本帖最后由 聪聪哥哥 于 2025-2-26 09:40 编辑

分享一下STM32L562的中断学习过程:
一:STM32中断知识的如下所示:
扩展中断和事件控制器(EXTI)通过可配置和直接的事件输入管理单个CPU和系统唤醒。它向电源控制提供唤醒请求,并向CPUNVIC生成中断请求,向CPU事件输入生成事件。对于CPU,需要额外的事件生成块(EVG)来生成CPU事件信号。
EXTI唤醒请求允许从停止模式唤醒系统。
中断请求和事件请求生成也可以在RUN模式下使用。EXTI还包括EXTlmuxlOport选择。
EXTl的主要功能如下:
支持43个输入事件
所有事件输入都可以唤醒系统。
外围设备中没有相关唤醒标志的事件在EXTI中有一个标志,并从EXTI对CPU产生中断。
异步事件输入分为2组:
可配置事件(来自I/0或外部设备的信号,能够产生脉冲)
可配置事件具有以下功能:可选择的活动触发边缘中断待决状态寄存器位,独立于上升和下降边缘。单独的中断和事件生成掩码,用于调节CPU的唤醒、中断和事件产生。
SW触发可能性
直接事件(来自具有相关标志的外设的中断和唤醒源,该标志需要在外围设备中清除)
直接事件具有以下特点固定上升边活动触发器(中断待命的状态标志由生成事件的外围设备提供。)EXTI中没有中断待命状态寄存位。
个人中断和事件生成掩码,用于调节CPU唤醒和事件生成。
没有 SW 触发可能性
TrustZone安全事件
-对安全输入事件的控制和配置位的访问可以变得安全。
EXTIIO端口选择
二:查看开发板的原理图
1.png
可以看到开发板板载了一个 用户按键,使用一阶RC滤波对输入信号进行滤波。
STM32 cube MX 软件配置如下所示:
2.png 3.png
系统时钟树配置:
4.png
三:软件代码如下所示:
3.1 中断配置部分
  1. static void EXTI13_IRQHandler_Config(void)
  2. {
  3.   GPIO_InitTypeDef   GPIO_InitStructure;
  4.   /* Enable GPIOC clock */
  5.   __HAL_RCC_GPIOC_CLK_ENABLE();
  6.   /* Configure PC.13 pin as input floating */
  7.   GPIO_InitStructure.Mode = GPIO_MODE_IT_FALLING;
  8.   GPIO_InitStructure.Pull = GPIO_NOPULL;
  9.   GPIO_InitStructure.Pin = BUTTON_USER_PIN;
  10.   HAL_GPIO_Init(GPIOC, &GPIO_InitStructure);
  11.   /* Enable and set line 13 Interrupt to the lowest priority */
  12.   HAL_NVIC_SetPriority(EXTI13_IRQn, 2, 0);
  13.   HAL_NVIC_EnableIRQ(EXTI13_IRQn);
  14. }
3.2 中断处理部分:
  1. void HAL_GPIO_EXTI_Falling_Callback(uint16_t GPIO_Pin)
  2. {
  3.   if (GPIO_Pin == GPIO_PIN_13)
  4.   {
  5.     BSP_LED_Toggle(LED10);
  6.   }
  7. }
四:实物效果如下:
WeChat_20250226093528 00_00_00-00_00_30.gif
中断的应用场景:
按钮/开关控制:当用户按下按钮或切换开关时,可以触发外部中断来响应用户的操作,例如控制LED的亮灭或执行特定功能。这种中断类型常用于用户界面交互,如按键控制设备启动、停止或切换模式。
传感器触发:当传感器检测到特定事件或条件发生时(如温度达到阈值、光线强度变化等),可以触发外部中断来及时处理传感器数据。这种中断类型在环境监测、工业自动化等领域有广泛应用。

您需要登录后才可以回帖 登录 | 注册

本版积分规则

108

主题

307

帖子

1

粉丝
快速回复 在线客服 返回列表 返回顶部