/* p5_2.c Toggle Green LED (LD2) on STM32F030R8 Nucleo64 using SysTick * * This program uses SysTick to generate 500 ms delay to * toggle the LED. System clock is running at 8 MHz. * SysTick is configure to count down from 3999999 to zero * to give a 500 ms delay. * This program was tested with Keil uVision v5.23 with DFP v2.0.0 */ #include "stm32f0xx.h" int main(void) { RCC->AHBENR |= 0x00020000; /* enable GPIOA clock */ GPIOA->MODER &= ~0x00000C00; /* clear pin mode */ GPIOA->MODER |= 0x00000400; /* set pin to output mode */ /* Configure SysTick */ SysTick->LOAD = 4000000 - 1; /* reload with number of clocks per second */ SysTick->VAL = 0; SysTick->CTRL = 5; /* enable it, no interrupt, use system clock */ while (1) { if (SysTick->CTRL & 0x10000) { /* if COUNT flag is set */ GPIOA->ODR ^= 0x00000020; /* toggle green LED */ } } }