Aynı EXTI hattından PA1 ve PC1 için çoklu interrupt'ların her ikisi de EXTI1 üzerinde olmak üzere mümkün mü?Aynı EXTI Line üzerinde çoklu kesmeler STM32
Böylece, PA1 üzerindeki bir düğmeyi tıklatarak PB6'da bir LED yanar, PC1'i tıklatarak bir LED'in PC0 üzerinde geçiş yapmasını sağlayın. i 2 farklı hat gelen kesmeler için kullanmak kodudur
Mikro denetleyici ==> STM32F091
:
//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);
kesme Handler:
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;
}
Uyarı: stm32'ye tamamen aşina değilim: Bu tür bir satır: 'EXTI-> PR = EXTI_PR_PR1; '' EXTI> PR' kaydının tamamını atamaktadır. Bence sadece bir bit değiştirmek istiyorsun. Öneri: 'EXTI-> PR | = EXTI_PR_PR1; ' – user3629249