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

STM32MP157开发板DTS中GPIO B12的EXTI中断配置问题

STM32MP157 GPIO B12 外部中断配置问题解决

核心问题:EXTI 引脚映射未通过 PinCtrl 配置

STM32MP1 的 EXTI 外设采用「一线对应多bank同编号引脚」的设计,每条 EXTI 线(0-15)只能绑定一个 GPIO bank 的同编号引脚。你提到 GPIO A12 能正常触发中断,是因为默认配置中 EXTI12 绑定了 GPIOA12。要切换到 GPIOB12,必须通过 PinCtrl 配置引脚复用为 EXTI 功能,仅靠中断属性配置是不够的。

正确的 DTS 配置步骤

  1. 添加 PinCtrl 节点配置
    在你的 DTS 文件中,先定义 GPIOB12 的 EXTI 复用配置(复用功能为 EXTI12,同时开启内部上拉):

    &pinctrl {
        button_pins: button-0 {
            pins {
                pinmux = <STM32_PINMUX('B', 12, EXTI)>;
                bias-pull-up;
            };
        };
    };
    
  2. 修改按键节点的中断与引脚配置
    按键节点需要关联上述 PinCtrl 配置,并正确指向 EXTI 控制器(EXTI12 对应引脚编号12,不是全局GPIO号28):

    button {
        compatible = "test,button";
        pinctrl-names = "default";
        pinctrl-0 = <&button_pins>;
        input-gpios = <&gpiob 12 GPIO_ACTIVE_LOW>;
        interrupts-extended = <&exti 12 IRQ_TYPE_EDGE_FALLING>;
        interrupt-names = "qwerty";
        status = "okay";
    };
    

    注意:input-gpios 里的 GPIO_PULL_UP 可以去掉,因为 PinCtrl 已经配置了上拉,避免重复配置冲突。

关于中断配置写法的说明

你尝试的几种写法问题点:

  • interrupts-extended = <&exti 28 ...>:错误,EXTI 线编号是0-15,对应引脚的编号(如12),不是全局GPIO序号(28)。
  • interrupts-extended = <&gpiob 12 ...> 或 interrupt-parent = <&gpiob>:STM32MP1 的 GPIO bank 本身不直接提供中断,中断最终由 EXTI 控制器处理,必须指向 &exti。

进阶需求:通过 interrupt-name 请求中断

Linux 内核的 request_irq() 函数不支持直接传入中断名作为参数,它需要的是中断号。要利用 interrupt-names 属性,驱动中需要通过设备的中断资源接口获取对应名字的中断号:

struct platform_device *pdev = ...; // 你的设备指针
unsigned int irq;

// 根据中断名获取对应的中断号
irq = platform_get_irq_byname(pdev, "qwerty");
if (irq < 0) {
    // 错误处理
    return irq;
}

// 请求中断
if (request_irq(irq, your_irq_handler, IRQF_TRIGGER_FALLING, "button_irq", pdev)) {
    // 错误处理
    return -EBUSY;
}

验证配置是否生效

编译更新设备树后,可通过以下方式验证:

  • 查看 /proc/interrupts,确认 exti12 条目存在。
  • 查看 /sys/kernel/debug/gpio,确认 GPIOB12 已配置为输入、上拉,且关联了中断。

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

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.08.04 04:10:30