Can anyone tell me how to configure external interrupts on stm32f103c8t6? is there anything wrong, my IRQHandler is not functioning properly...(actually, i wanted my LED(PA1) to glow when i interrupted it with push button(PB3) but it is not doing so.
#include "stm32f10x.h"
void EXTI3_IRQ_IRQHandler(void)
{
if(EXTI->PR & EXTI_PR_PR3)
{
EXTI->PR |= EXTI_PR_PR3;
GPIOA-> BRR |= GPIO_BRR_BS1;
}
}
int main(void)
{
RCC ->APB2ENR |= RCC_APB2ENR_IOPAEN; //LED(OUTPUT PIN)(PA1)
GPIOA->CRL &= ~(GPIO_CRL_CNF1);
GPIOA->CRL |= GPIO_CRL_MODE1_0;
GPIOA->CRL &= ~(GPIO_CRL_MODE1_1);
RCC ->APB2ENR |= RCC_APB2ENR_IOPBEN; //PUSH BUTTON(INPUT PIN)(PB3)
GPIOB->CRL |= GPIO_CRL_CNF3_0;
GPIOB->CRL &= ~(GPIO_CRL_CNF3_1);
GPIOB->CRL &= ~(GPIO_CRL_MODE3);
RCC ->APB2ENR |= RCC_APB2ENR_AFIOEN; //FOR ALTERNATE FUNCTION
EXTI->IMR |= EXTI_IMR_MR3; //INTERRUPT MASK REGISTER(0:MASKING, 1:NON-MASKING)
EXTI->RTSR |= EXTI_RTSR_TR3; // RISING EDGE TRIGGERED INTERRUPT
AFIO->EXTICR[0] = AFIO_EXTICR1_EXTI3_PB;
NVIC_EnableIRQ(EXTI3_IRQn);
NVIC_SetPriority(EXTI3_IRQn,0);
while(1)
{
GPIOA-> BSRR |= GPIO_BSRR_BR1;
}
}
