Код: Выделить всё
#include "stm32f4xx.h"
void EXTI0_IRQHandler(void)
{
EXTI->PR |= EXTI_PR_PR3;//?????????? ???? ??????????
GPIOD->BSRRL |= (1 << 15)|(1 << 14)|(1 << 13)|(1 << 12);
}
int main()
{
RCC->AHB1ENR |= RCC_AHB1ENR_GPIODEN; /*Clocking port D*/
RCC->AHB1ENR |= RCC_AHB1ENR_GPIOAEN;/*Clocking port A*/
RCC->APB2ENR |= RCC_APB2ENR_SYSCFGEN;/*Clocking SYSCFG*/
GPIOD->MODER |= 0x55000000;/*Set pins 15, 14, 13, 12 as output*/
GPIOD->OTYPER = 0; /**/
GPIOD->OSPEEDR = 0; /**/
GPIOA->PUPDR |= GPIO_PUPDR_PUPDR3_0;
SYSCFG->EXTICR[0] = SYSCFG_EXTICR1_EXTI3_PA; /*Port A line 3*/
EXTI->RTSR |= EXTI_RTSR_TR3; /*Rising*/
EXTI->FTSR |= EXTI_FTSR_TR3;/*Falling*/
NVIC_EnableIRQ(EXTI0_IRQn); /*Enable EXTI interrupt*/
NVIC_SetPriority (EXTI0_IRQn, 2);
EXTI->IMR |=EXTI_IMR_MR3;//Enable EXTI interrupt
while(1)
{
/*if (GPIOA->IDR & (1 << 0))
{
GPIOE->BSRRL |= (1 << 1);
}
else
{
GPIOE->BSRRH |= (1 << 1);
}*/
}
}В чем проблема не могу понять, вроде все просто. Может кнопку не правильно повесил на пин.
З.Ы. Знаю что не лучший способ играться с EXTI путем работы с кнопкой, но по-моему это самый очевидный способ увидеть работу. Против дребезга ничего не делаю.