cancel
Showing results for 
Search instead for 
Did you mean: 

EXTI not getting into isr L552zetq/ nucleo-144

sourav
Visitor

i have successfully make some basic module in stm32l552 nucleo in register level and in asm , successfully program

GPIO, TIMER, UART RX,TX,. But stuck in interrupt section for few days. i am tring to toggle onboard led(PA9) using user button PC13. my hal code running successfully using call back

void HAL_GPIO_EXTI_Falling_Callback(uint16_t GPIO_Pin)  

&

void HAL_GPIO_EXTI_Rising_Callback(uint16_t GPIO_Pin)

But failed to get into ISR without using HAL. Athough EXTI->EXTICR[3] , IMR1, RTSR1 value is same as my HAL auto generated code.

please help. here is my simple code......................

 

 

//user button PC13(NUCLEO BOARD MANUAL PAGE NO.33 ) input STM32L5 Series
//pa9 onboard led
//board : NUCLEO L552ZET6Q

#include "stm32l5xx.h"

volatile int userbuttoncounter; //for monitoring

 

//void EXTI13_IRQHandler(void)
void EXTI13_IRQHandler()
{


//if (EXTI->RPR1 & EXTI_RPR1_RPIF13) or
if ((EXTI->RPR1 & (1U<<13)) != 0 )

 

{
//clear PR flag
EXTI->RPR1 |= (1U<<13);

userbuttoncounter++;
GPIOA->ODR ^= GPIO_ODR_OD9; //toggle led pa9
}
}

 


int main(void) {

//pa9 onboard led
RCC->AHB2ENR |= RCC_AHB2ENR_GPIOAEN;
/* set pin to output mode */
GPIOA->MODER &= ~(GPIO_MODER_MODE9_1);
GPIOA->MODER |= (GPIO_MODER_MODE9_0);

//enable gpioC clock
RCC->AHB2ENR |= RCC_AHB2ENR_GPIOCEN;

//user button as pc13 input
GPIOC->MODER &= ~(GPIO_MODER_MODE13_0);
GPIOC->MODER &= ~(GPIO_MODER_MODE13_0);

__disable_irq();

EXTI->EXTICR[3] |= 0x200;//FROM HAL BACKTESTING, pc13 EXTICR4 = 0x200

 

EXTI->IMR1 |= EXTI_IMR1_IM13; //EXTI_IMR1=FF9E2000,backtesting from hal is correct

EXTI->RTSR1 |= EXTI_RTSR1_RT13; //EXTI_RTSR1 = 0x2000,backtested

 

 

NVIC_EnableIRQ(EXTI13_IRQn); //source..../Driver/CIMSIS/Device/ST//.../stm32L552xx.h
//__enable_irq();

//as single IT is used ,priority  setting is not required

while(1);
{

}

}

1 REPLY 1
TDK
Super User
__disable_irq();
...
//__enable_irq();

You have interrupts globally disabled.

If you feel a post has answered your question, please click "Accept as Solution".