#include "stm32f4xx.h" int main () { RCC->AHB1ENR |= 0x0011; // Enable clock for GPIOE & GPIOA RCC->APB1ENR |= 0x00000008; // Enable Clock for Timer 5 GPIOE->MODER |= 0x00010000; // Output pin for time mark at port E GPIOA->MODER |= 0x00001000; // output pin for LED D390 NVIC_EnableIRQ(TIM5_IRQn); // Enable IRQ for TIM5 in NVIC TIM5->ARR = 84000; // Auto Reload Register value => 1ms TIM5->DIER |= 0x0001; // DMA/IRQ Enable Register - enable IRQ on update TIM5->CR1 |= 0x0001; // Enable Counting while (1) { if (GPIOE->IDR & 0x01) GPIOA->ODR |= 0x0040; // press S370 to turn on D390 else GPIOA->ODR &= ~0x0040; }; } void TIM5_IRQHandler(void) { TIM5->SR &= ~0x00000001; // clear IRQ flag in TIM5 GPIOE->ODR |= 0x0100; // PE08 up GPIOE->ODR &= ~0x0100; // PE08 down }