STM32F407调试错误2:EXTI10_15外部中断共用一个中断向量问题

本文探讨了在初始化EXTI时,为何使用或操作同时设置EXTI_Line10到15会导致中断失效,而分开初始化却能正常工作。作者推测可能是库函数对寄存器操作的限制。通过实例展示了正确配置步骤和可能的原因分析。

摘要生成于 C知道 ,由 DeepSeek-R1 满血版支持, 前往体验 >

EXTI10_15共用一个中断向量地址,但是中断线EXTI_Line10~EXTI_Line15是分开的。

在初始化时,使用 或 操作进行初始化时,如下部分代码,对中断线进行初始化后,中断程序没有动作。

        EXTI_InitStructure.EXTI_Line=EXTI_Line15 | EXTI_Line14 | EXTI_Line13;
        EXTI_InitStructure.EXTI_Mode=EXTI_Mode_Interrupt;
        EXTI_InitStructure.EXTI_trigger=EXTI_Trigger_Falling;
        EXTI_InitStructure.EXTI_LineCmd = ENABLE;
        EXTI_Init(&EXTI_InitStructure);

查阅网上代码发现分开写试试:

        EXTI_InitStructure.EXTI_Line=EXTI_Line15;
        EXTI_InitStructure.EXTI_Mode=EXTI_Mode_Interrupt;
        EXTI_InitStructure.EXTI_trigger=EXTI_Trigger_Falling;
        EXTI_InitStructure.EXTI_LineCmd = ENABLE;
        EXTI_Init(&EXTI_InitStructure);

        EXTI_InitStructure.EXTI_Line=EXTI_Line14 ;
        EXTI_InitStructure.EXTI_Mode=EXTI_Mode_Interrupt;
        EXTI_InitStructure.EXTI_trigger=EXTI_Trigger_Falling;
        EXTI_InitStructure.EXTI_LineCmd = ENABLE;
        EXTI_Init(&EXTI_InitStructure);

 测试发现:外部中断可以有效执行!

奇怪的配置过程,可能是库函数对寄存器的操作不接受或操作吧!

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值