繁体   English   中英

同一EXTI Line STM32上的多个中断

[英]Multiple interrupts on the same EXTI Line STM32

是否可以从同一个EXTI线上获得多个中断,例如PA1和PC1都位于EXTI1上。

这样,通过单击PA1上的按钮,LED会在PB6上点亮,然后通过单击PC1,LED会在PC0上切换。

单片机==> STM32F091

那是我用于从2条不同的线进行中断的代码:

//PC1
SYSCFG->EXTICR[0] |= SYSCFG_EXTICR1_EXTI1_PA;
EXTI->IMR = EXTI_IMR_MR1;
EXTI->RTSR = EXTI_RTSR_TR1;
EXTI->FTSR = EXTI_FTSR_TR1; 
//PB0
SYSCFG->EXTICR[0] |= SYSCFG_EXTICR1_EXTI1_PC;
EXTI->IMR |= EXTI_IMR_MR1; 
EXTI->RTSR |= EXTI_RTSR_TR1; 
EXTI->FTSR |= EXTI_FTSR_TR1;
NVIC_EnableIRQ(EXTI0_1_IRQn);
NVIC_SetPriority(EXTI0_1_IRQn,0);

中断处理程序:

void EXTI0_1_IRQHandler(void)
{
if ((EXTI->PR & EXTI_PR_PR1) == EXTI_PR_PR1)  /* Check line 1 has triggered      the IT */
{
EXTI->PR = EXTI_PR_PR1; /* Clear the pending bit */
GPIOC->ODR ^= 1<<0;
}
if ((EXTI->PR & EXTI_PR_PR0) == EXTI_PR_PR0)  /* Check line 0 has triggered  the IT */
{
EXTI->PR = EXTI_PR_PR0; /* Clear the pending bit */
    GPIOB->ODR ^= 1<<6;
}

不,你不能。 抱歉。

16个GPIO驱动的EXTI中的每个只能连接到六个相应引脚之一。 例如,EXTI0可以连接到PA0,PB0,PC0,PD0,PE0或PF0 诸如SYSCFG_EXTICR1_EXTI1_PA类的值不是纯位掩码, 因此无法组合。

在此处输入图片说明

有关更多详细信息,请参见STM32F0参考手册的 12.2.5节。

暂无
暂无

声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.

 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM