gpt4 book ai didi

c - STM32同一条EXTI线上的多个中断

转载 作者:太空宇宙 更新时间:2023-11-04 00:35:55 26 4
gpt4 key购买 nike

是否有可能从相同的 EXTI 线路获得多个中断,例如 PA1 和 PC1 它们都在 EXTI1 上。

因此,通过点击 PA1 上的按钮,PB6 上的 LED 会点亮,而通过点击 PC1,LED 会在 PC0 上切换。

微 Controller ==> 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)
{
// Check line 1 has triggered the IT.
if ((EXTI->PR & EXTI_PR_PR1) == EXTI_PR_PR1)
{
EXTI->PR = EXTI_PR_PR1; // Clear the pending bit.
GPIOC->ODR ^= 1 << 0;
}

// Check line 0 has triggered the IT.
if ((EXTI->PR & EXTI_PR_PR0) == EXTI_PR_PR0)
{
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 之类的值不是纯位掩码,并且不能组合。

enter image description here

有关更多详细信息,请参阅 the STM32F0 reference manual 的第 12.2.5 节.

关于c - STM32同一条EXTI线上的多个中断,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/36438879/

26 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com