working on making PA3 LED toggle on PA1 Rising edge interrupt

redesign_interrupts
polymurph 3 years ago
parent 7996297ea4
commit 242cceb36c

@ -6,18 +6,19 @@
#include "timer.h" #include "timer.h"
#include "i2c.h" #include "i2c.h"
#include "stm32f042x6.h"
#include "hardwareDescription.h" #include "hardwareDescription.h"
void setup(); void setup();
void EXTI3_IRQHandler(void) void EXTI1_IRQHandler(void)
{ {
if((EXTI->PR1 & EXTI_PR1_PIF4) != 0) { if((EXTI->PR & EXTI_PR_PIF1) != 0) {
pinToggle(pinB3); pinToggle(pinB3);
// clear flag // clear flag
EXTI->PR1 |= EXTI_PR1_PIF4; EXTI->PR |= EXTI_PR_PIF1;
} }
} }
@ -25,22 +26,27 @@ int main(int argc, char *argv[])
{ {
setup(); setup();
pinConfig(pinB4, input, def_stage, pullUp, def_speed); // https://controllerstech.com/external-interrupt-using-registers/
pinConfig(pinA1, input, def_stage, pullUp, def_speed);
// enable interrupt // enable interrupt
NVIC_EnableIRQ(EXTI4_IRQn); //NVIC_EnableIRQ(EXTI0_1_IRQn);
// Connect // Connect
RCC->APB2ENR |= RCC_APB2ENR_SYSCFGEN; RCC->APB2ENR |= RCC_APB2ENR_SYSCFGCOMPEN;
SYSCFG->EXTICR[0] &= ~SYSCFG_EXTICR1_EXTI4; SYSCFG->EXTICR[0] &= ~SYSCFG_EXTICR1_EXTI0;
SYSCFG->EXTICR[0] |= SYSCFG_EXTICR1_EXTI4_PA; SYSCFG->EXTICR[0] |= SYSCFG_EXTICR1_EXTI0_PA;
// rising trigger selection // rising trigger selection
EXTI->RTSR1 |= EXTI_RTSR1_RT4; EXTI->RTSR |= EXTI_RTSR_RT1;
// Interrupt mask register // Interrupt mask register
EXTI->IMR1 |= EXTI_IMR1_IM4; EXTI->IMR |= EXTI_IMR_IM1;
NVIC_SetPriority (EXTI1__IRQn, 1);
NVIC_EnableIRQ(EXTI1);
while(1); while(1);
/* /*
@ -79,7 +85,7 @@ void setup()
//blinks 10 times to indicate the sicsessfull init if the device //blinks 10 times to indicate the sicsessfull init if the device
for(i = 0 ; i < 2 ; i++) { for(i = 0 ; i < 10 ; i++) {
delayMs(100); delayMs(100);
pinToggle(pinB3); pinToggle(pinB3);
delayMs(100); delayMs(100);

Loading…
Cancel
Save