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

Nucleo STM32F103RB开发板EXTI4中断失效问题排查求助

故障排查及修复方案

1. GPIO配置的致命错误

你在配置PB3和PB4引脚时,错误操作了GPIOC->CRL而非GPIOB->CRL:

GPIOC->CRL |= ((1 << 15) | (1<<19)); // 错误:应该是GPIOB->CRL

这导致PB3和PB4的引脚模式根本没有被正确设置,虽然EXTI3碰巧工作(可能是引脚默认浮空状态刚好能触发),但PB4的配置完全失效。

2. GPIO输入模式配置逻辑错误

你注释里标注的10 : input是错误的:STM32F1的GPIO模式位(MODE)中,10是复用功能输出模式,而非输入模式。输入模式需要将MODE位设为00,再通过CNF位配置输入类型(浮空/上拉/下拉)。

正确的PB3、PB4输入配置示例(以上拉输入为例):

// PB3:MODE位清0(输入模式),CNF位设为01(上拉输入)
GPIOB->CRL &= ~(0xF << 12);
GPIOB->CRL |= (0x2 << 12);
// PB4:MODE位清0,CNF位设为01(上拉输入)
GPIOB->CRL &= ~(0xF << 16);
GPIOB->CRL |= (0x2 << 16);

3. AFIO_EXTICR寄存器宏定义误用

你配置EXTI3时使用了错误的宏:

AFIO->EXTICR[0] &= ~AFIO_EXTICR2_EXTI3; // 错误:EXTI3属于EXTICR1,对应宏是AFIO_EXTICR1_EXTI3

虽然EXTI3当前能工作,但这是不规范的写法,建议修正为:

AFIO->EXTICR[0] &= ~AFIO_EXTICR1_EXTI3;
AFIO->EXTICR[0] |= AFIO_EXTICR1_EXTI3_PB;

4. 中断服务函数的延时问题

你在中断服务函数里加了20000000次nop的延时,这会导致系统长时间被中断阻塞,可能影响其他功能,建议替换为更合理的防抖方式(比如使用定时器防抖),不过这不是EXTI4失效的直接原因。


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

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.07.21 15:27:52