#include "main.h" #include "delay.h" #include "deviceSetup.h" #include "usart.h" #include "ascii.h" #include "timer.h" #include "i2c.h" #include "stm32f042x6.h" #include "hardwareDescription.h" void setup(); void EXTI1_IRQHandler(void) { if((EXTI->PR & EXTI_PR_PIF1) != 0) { pinToggle(pinB3); // clear flag EXTI->PR |= EXTI_PR_PIF1; } } int main(int argc, char *argv[]) { setup(); // https://controllerstech.com/external-interrupt-using-registers/ pinConfig(pinA1, input, def_stage, pullUp, def_speed); // enable interrupt //NVIC_EnableIRQ(EXTI0_1_IRQn); // 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; // Interrupt mask register EXTI->IMR |= EXTI_IMR_IM1; NVIC_SetPriority (EXTI1__IRQn, 1); NVIC_EnableIRQ(EXTI1); while(1); /* while(1) { delayMs(100); pinToggle(pinB3); delayMs(100); } */ return 1; } void setup() { uint8_t i = 0; delayInitMs(8000000, 1000); // Clock Freq and Divider for ARM library pinConfig(pinB3, output, pushPull, def_res, def_speed); pinConfig(pinA0, input, def_stage, pullDown, def_speed); setupInit(); // This is the sescond call of System init the assebly start code is calling it before the main. usartInit( usart2, pinA2, pinA15, 115200, eight, NO_PARITY_CTRL, noFlowControl); //clears screen and send the wellcome messgae print_Usart(usart2, ASCII_clear); print_Usart(usart2, "Hello to our KED project\n\r"); //blinks 10 times to indicate the sicsessfull init if the device for(i = 0 ; i < 10 ; i++) { delayMs(100); pinToggle(pinB3); delayMs(100); } pinWrite(pinB3,0); }