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);
测试发现:外部中断可以有效执行!
奇怪的配置过程,可能是库函数对寄存器的操作不接受或操作吧!