|
|
|
@ -9,16 +9,16 @@
|
|
|
|
|
#include "stm32f042x6.h"
|
|
|
|
|
#include "hardwareDescription.h"
|
|
|
|
|
|
|
|
|
|
volatile uint8_t led_on;
|
|
|
|
|
|
|
|
|
|
void setup();
|
|
|
|
|
|
|
|
|
|
void EXTI1_IRQHandler(void)
|
|
|
|
|
void EXTI0_1_IRQHandler(void)
|
|
|
|
|
{
|
|
|
|
|
if((EXTI->PR & EXTI_PR_PIF1) != 0) {
|
|
|
|
|
|
|
|
|
|
pinToggle(pinB3);
|
|
|
|
|
|
|
|
|
|
if(EXTI->PR & EXTI_PR_PIF1) {
|
|
|
|
|
// clear flag
|
|
|
|
|
EXTI->PR |= EXTI_PR_PIF1;
|
|
|
|
|
led_on = !led_on;
|
|
|
|
|
}
|
|
|
|
|
}
|
|
|
|
|
|
|
|
|
@ -28,27 +28,30 @@ int main(int argc, char *argv[])
|
|
|
|
|
|
|
|
|
|
// https://controllerstech.com/external-interrupt-using-registers/
|
|
|
|
|
|
|
|
|
|
pinConfig(pinA1, input, def_stage, pullUp, def_speed);
|
|
|
|
|
// enable interrupt
|
|
|
|
|
//NVIC_EnableIRQ(EXTI0_1_IRQn);
|
|
|
|
|
|
|
|
|
|
pinConfig(pinA1, input, def_stage, pullDown, def_speed);
|
|
|
|
|
|
|
|
|
|
// Connect
|
|
|
|
|
RCC->APB2ENR |= RCC_APB2ENR_SYSCFGCOMPEN;
|
|
|
|
|
SYSCFG->EXTICR[0] &= ~SYSCFG_EXTICR1_EXTI0;
|
|
|
|
|
SYSCFG->EXTICR[0] |= SYSCFG_EXTICR1_EXTI0_PA;
|
|
|
|
|
|
|
|
|
|
// rising trigger selection
|
|
|
|
|
EXTI->RTSR |= EXTI_RTSR_RT1;
|
|
|
|
|
RCC->APB2ENR |= RCC_APB2ENR_SYSCFGEN;
|
|
|
|
|
SYSCFG->EXTICR[1] &= ~SYSCFG_EXTICR1_EXTI1_Msk;
|
|
|
|
|
SYSCFG->EXTICR[1] |= SYSCFG_EXTICR1_EXTI1_PA;
|
|
|
|
|
|
|
|
|
|
// Interrupt mask register
|
|
|
|
|
EXTI->IMR |= EXTI_IMR_IM1;
|
|
|
|
|
|
|
|
|
|
// rising trigger selection
|
|
|
|
|
EXTI->RTSR |= EXTI_RTSR_RT1;
|
|
|
|
|
|
|
|
|
|
NVIC_SetPriority (EXTI1__IRQn, 1);
|
|
|
|
|
NVIC_EnableIRQ(EXTI1);
|
|
|
|
|
NVIC_SetPriority (EXTI0_1_IRQn, 0);
|
|
|
|
|
NVIC_EnableIRQ(EXTI0_1_IRQn);
|
|
|
|
|
|
|
|
|
|
while(1);
|
|
|
|
|
while(1)
|
|
|
|
|
{
|
|
|
|
|
if(led_on){
|
|
|
|
|
pinWrite(pinB3,1);
|
|
|
|
|
} else{
|
|
|
|
|
pinWrite(pinB3,0);
|
|
|
|
|
}
|
|
|
|
|
}
|
|
|
|
|
/*
|
|
|
|
|
while(1)
|
|
|
|
|
{
|
|
|
|
|