打印
[STM32L5]

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

[复制链接]
292|0
手机看帖
扫描二维码
随时随地手机跟帖
跳转到指定楼层
楼主
本帖最后由 聪聪哥哥 于 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端口选择
二:查看开发板的原理图

可以看到开发板板载了一个 用户按键,使用一阶RC滤波对输入信号进行滤波。
STM32 cube MX 软件配置如下所示:

系统时钟树配置:

三:软件代码如下所示:
3.1 中断配置部分
static void EXTI13_IRQHandler_Config(void)
{
  GPIO_InitTypeDef   GPIO_InitStructure;
  /* Enable GPIOC clock */
  __HAL_RCC_GPIOC_CLK_ENABLE();
  /* Configure PC.13 pin as input floating */
  GPIO_InitStructure.Mode = GPIO_MODE_IT_FALLING;
  GPIO_InitStructure.Pull = GPIO_NOPULL;
  GPIO_InitStructure.Pin = BUTTON_USER_PIN;
  HAL_GPIO_Init(GPIOC, &GPIO_InitStructure);
  /* Enable and set line 13 Interrupt to the lowest priority */
  HAL_NVIC_SetPriority(EXTI13_IRQn, 2, 0);
  HAL_NVIC_EnableIRQ(EXTI13_IRQn);
}
3.2 中断处理部分:
void HAL_GPIO_EXTI_Falling_Callback(uint16_t GPIO_Pin)
{
  if (GPIO_Pin == GPIO_PIN_13)
  {
    BSP_LED_Toggle(LED10);
  }
}
四:实物效果如下:

中断的应用场景:
按钮/开关控制:当用户按下按钮或切换开关时,可以触发外部中断来响应用户的操作,例如控制LED的亮灭或执行特定功能。这种中断类型常用于用户界面交互,如按键控制设备启动、停止或切换模式。
传感器触发:当传感器检测到特定事件或条件发生时(如温度达到阈值、光线强度变化等),可以触发外部中断来及时处理传感器数据。这种中断类型在环境监测、工业自动化等领域有广泛应用。

使用特权

评论回复
发新帖 我要提问
您需要登录后才可以回帖 登录 | 注册

本版积分规则

55

主题

150

帖子

1

粉丝