cancel
Showing results for 
Search instead for 
Did you mean: 

external interrupt in stm32f107

shalini12
Visitor
#include "stm32f10x.h"
#include "interrupt.h"


void intr_config()
{
RCC -> APB2ENR |= RCC_APB2ENR_IOPAEN;
RCC -> APB2ENR |= RCC_APB2ENR_IOPBEN;
RCC -> APB2ENR |= RCC_APB2ENR_IOPDEN;
RCC -> APB2ENR |= RCC_APB2ENR_AFIOEN;

GPIOA ->CRH |= GPIO_CRH_MODE8_1 ;
GPIOA ->CRH &= ~GPIO_CRH_CNF8_0;

GPIOB -> CRL |= ~GPIO_CRL_MODE1_1; //PB1 output mode
GPIOB -> CRL &= ~GPIO_CRL_CNF1_0;

GPIOD -> CRH &= ~GPIO_CRH_MODE15_0; //PD15 input mode
GPIOD -> CRH |= GPIO_CRH_CNF15_0;

GPIOB -> ODR &= ~(unsigned int)GPIO_ODR_ODR1;
GPIOD -> IDR |= GPIO_IDR_IDR15;

AFIO ->EVCR |= AFIO_EVCR_PORT_PB;
AFIO ->EVCR |= AFIO_EVCR_PIN_PX1;

EXTI -> IMR |= EXTI_IMR_MR1;
EXTI -> RTSR |= EXTI_RTSR_TR1;

AFIO ->EVCR |= AFIO_EVCR_PORT_PD;
AFIO ->EVCR |= AFIO_EVCR_PIN_PX15;

EXTI -> IMR |= EXTI_IMR_MR15;
EXTI -> FTSR |= EXTI_FTSR_TR15;

NVIC_EnableIRQ(EXTI15_10_IRQn);
}


void EXTI15_10_IRQHandler()
{
if((EXTI->PR & EXTI_PR_PR15) != 0)
{
GPIOA ->ODR |= GPIO_ODR_ODR8;
EXTI->PR |= EXTI_PR_PR15;
}
}
On key press LED not glow

 

1 REPLY 1
TDK
Guru

Create a project in CubeMX that does the same thing and compare register values. Nothing jumps out at a quick glance.

> GPIOA ->ODR |= GPIO_ODR_ODR8;

This sets PA8 high. Probably toggling it here is the better option.

 

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