blinky.cpp 1.5 KB

12345678910111213141516171819202122232425262728293031323334353637383940414243444546474849505152535455565758596061626364
  1. #if defined STM32L0
  2. #include <stm32l0xx_hal.h>
  3. // STM32L0538-Discovery green led - PB4
  4. #define LED_PORT GPIOB
  5. #define LED_PIN GPIO_PIN_4
  6. #define LED_PORT_CLK_ENABLE __HAL_RCC_GPIOB_CLK_ENABLE
  7. #elif defined STM32F1
  8. #include <stm32f1xx_hal.h>
  9. // STM32VL-Discovery green led - PC9
  10. #define LED_PORT GPIOC
  11. #define LED_PIN GPIO_PIN_9
  12. #define LED_PORT_CLK_ENABLE __HAL_RCC_GPIOC_CLK_ENABLE
  13. #elif defined STM32F4
  14. #include <stm32f4xx_hal.h>
  15. // STM32F4-Discovery green led - PD12
  16. #define LED_PORT GPIOD
  17. #define LED_PIN GPIO_PIN_12
  18. #define LED_PORT_CLK_ENABLE __HAL_RCC_GPIOD_CLK_ENABLE
  19. #endif
  20. //This prevent name mangling for functions used in C/assembly files.
  21. extern "C"
  22. {
  23. void SysTick_Handler(void)
  24. {
  25. HAL_IncTick();
  26. // 1 Hz blinking
  27. if ((HAL_GetTick() % 500) == 0)
  28. {
  29. HAL_GPIO_TogglePin(LED_PORT, LED_PIN);
  30. }
  31. }
  32. }
  33. void initGPIO()
  34. {
  35. GPIO_InitTypeDef GPIO_Config;
  36. GPIO_Config.Mode = GPIO_MODE_OUTPUT_PP;
  37. GPIO_Config.Pull = GPIO_NOPULL;
  38. GPIO_Config.Speed = GPIO_SPEED_FREQ_HIGH;
  39. GPIO_Config.Pin = LED_PIN;
  40. LED_PORT_CLK_ENABLE();
  41. HAL_GPIO_Init(LED_PORT, &GPIO_Config);
  42. }
  43. int main(void)
  44. {
  45. HAL_Init();
  46. initGPIO();
  47. // 1kHz ticks
  48. HAL_SYSTICK_Config(SystemCoreClock / 1000);
  49. for (;;)
  50. __WFI();
  51. return 0;
  52. }