/* Configure EXTI interupt PB4 */
SYSCFG->EXTICR[0] &= ~SYSCFG_EXTICR2_EXTI4_PB;
EXTI->IMR |= EXTI_IMR_IM4; //Interrupt Mask on line 2 */
EXTI->RTSR |= EXTI_RTSR_RT4;
EXTI->FTSR |= EXTI_FTSR_FT4;
NVIC_EnableIRQ(EXTI4_15_IRQn); //Załączenie przerwania na pinie zasilania
NVIC_SetPriority(EXTI4_15_IRQn,1);
This is how I configure the EXTI
GPIOB->MODER = (0U << GPIO_MODER_MODE4_Pos);
GPIOB->PUPDR = (1U << GPIO_PUPDR_PUPD4_Pos);
This is how I manage the pins
while(1)
{
if(state == 0){
ServoToggle(0, 100, 255);
delay(1000);
} else {
ServoToggle(0, 115, 255);
delay(1000);
ServoToggle(0, 60, 255);
delay(1000);
}
delay(1);
}
This is what my program does after stand-up
void EXTI4_15_IRQHandler(void)
{
if(!(GPIOB->IDR & GPIO_IDR_ID4)){
state = 0;
} else {
state = 1;
}
EXTI->PR = EXTI_PR_PR4;
}
This is how I'm trying to handle the interrupt.
And this thing does not work. Idk why but for PA0 it works like a charm but changing to PB4 stops poping up interrupt event.
I've got a button connected to the pin that changed the IDR register on press.
What am I missing?
I'm using STM32L052 family