You need to enable JavaScript to run this app.
优惠活动
大模型
产品
解决方案
定价
更多

STM32F042的GPIOB引脚4触发中断示例代码求询(非HAL库)

STM32F042 GPIOB引脚4 边沿触发中断示例代码(非HAL库)

以下是基于STM32标准外设库的实现代码,完全适配STM32F042芯片:

1. 头文件引用

#include "stm32f0xx.h"

2. GPIO与中断初始化函数

void GPIO_EXTI_Init(void)
{
    GPIO_InitTypeDef GPIO_InitStruct;
    EXTI_InitTypeDef EXTI_InitStruct;
    NVIC_InitTypeDef NVIC_InitStruct;

    // 1. 使能GPIOB与SYSCFG时钟
    RCC_AHBPeriphClockCmd(RCC_AHBPeriph_GPIOB, ENABLE);
    RCC_APB2PeriphClockCmd(RCC_APB2Periph_SYSCFG, ENABLE);

    // 2. 配置GPIOB引脚4为上拉输入模式(可根据实际需求改为浮空/下拉)
    GPIO_InitStruct.GPIO_Pin = GPIO_Pin_4;
    GPIO_InitStruct.GPIO_Mode = GPIO_Mode_IN;
    GPIO_InitStruct.GPIO_PuPd = GPIO_PuPd_UP;
    GPIO_Init(GPIOB, &GPIO_InitStruct);

    // 3. 将EXTI4中断线映射到GPIOB引脚4
    SYSCFG_EXTILineConfig(EXTI_PortSourceGPIOB, EXTI_PinSource4);

    // 4. 配置EXTI中断参数
    EXTI_InitStruct.EXTI_Line = EXTI_Line4;
    EXTI_InitStruct.EXTI_Mode = EXTI_Mode_Interrupt;
    EXTI_InitStruct.EXTI_Trigger = EXTI_Trigger_Rising_Falling; // 双边沿触发,可改为Rising/Falling
    EXTI_InitStruct.EXTI_LineCmd = ENABLE;
    EXTI_Init(&EXTI_InitStruct);

    // 5. 配置NVIC中断优先级
    NVIC_InitStruct.NVIC_IRQChannel = EXTI4_15_IRQn;
    NVIC_InitStruct.NVIC_IRQChannelPriority = 0; // 优先级可根据系统需求调整
    NVIC_InitStruct.NVIC_IRQChannelCmd = ENABLE;
    NVIC_Init(&NVIC_InitStruct);
}

3. 中断服务函数

void EXTI4_15_IRQHandler(void)
{
    // 判定是否为EXTI4触发的中断
    if(EXTI_GetITStatus(EXTI_Line4) != RESET)
    {
        // --------------------------
        // 在此添加你的中断处理逻辑
        // 例如:状态记录、外设控制等
        // --------------------------

        // 必须清除中断标志位,否则会持续触发中断
        EXTI_ClearITPendingBit(EXTI_Line4);
    }
}

关键注意点

  • 时钟配置:STM32F0需要单独使能SYSCFG时钟,这是与F1系列的核心差异之一。
  • EXTI映射:通过SYSCFG_EXTILineConfig完成引脚到EXTI线的绑定,PB4固定对应EXTI_Line4。
  • 中断服务函数复用:STM32F0中EXTI4至EXTI15共用同一个中断入口,必须通过状态判断锁定触发源。
  • 标志位清除:中断处理完成后必须清除对应EXTI线的挂起标志,否则中断会反复触发。

内容的提问来源于stack exchange,提问作者user14665305

相关产品推荐
方舟 Agent Plan

超全模态模型 × Harness 升级,最新支持 Deepseek-V4.1-Flash、GLM-5.3 系列、Doubao-Seedream-5.0-pro、Kimi-K3 (部分), 限时 9.9 元起

最近更新时间:2026.07.15 12:45:04