main.cpp 1.8 KB

1234567891011121314151617181920212223242526272829303132333435363738394041424344454647484950515253545556575859606162636465666768697071727374757677787980818283848586
  1. #include "main.h"
  2. #include <FreeRTOS.h>
  3. #include <task.h>
  4. #include <timers.h>
  5. #if defined STM32H7
  6. #include <stm32h7xx_hal.h>
  7. // STM32H743ZI blue LED
  8. #define LED_PORT GPIOB
  9. #define LED_PIN GPIO_PIN_7
  10. #define LED_PORT_CLK_ENABLE __HAL_RCC_GPIOB_CLK_ENABLE
  11. #elif defined STM32F4
  12. #include <stm32f4xx_hal.h>
  13. // STM32F4-Discovery green led - PD12
  14. #define LED_PORT GPIOD
  15. #define LED_PIN GPIO_PIN_12
  16. #define LED_PORT_CLK_ENABLE __HAL_RCC_GPIOD_CLK_ENABLE
  17. #elif defined STM32L5
  18. #include <stm32l5xx_hal.h>
  19. // NUCLEO-L552ZE-Q blue led - PB7
  20. #define LED_PORT GPIOB
  21. #define LED_PIN GPIO_PIN_7
  22. #define LED_PORT_CLK_ENABLE __HAL_RCC_GPIOB_CLK_ENABLE
  23. #endif
  24. static void blinky::blinkTask(void *arg)
  25. {
  26. for(;;)
  27. {
  28. vTaskDelay(500);
  29. HAL_GPIO_TogglePin(LED_PORT, LED_PIN);
  30. }
  31. }
  32. void blinky::init()
  33. {
  34. GPIO_InitTypeDef GPIO_Config;
  35. GPIO_Config.Mode = GPIO_MODE_OUTPUT_PP;
  36. GPIO_Config.Pull = GPIO_NOPULL;
  37. GPIO_Config.Speed = GPIO_SPEED_FREQ_HIGH;
  38. GPIO_Config.Pin = LED_PIN;
  39. LED_PORT_CLK_ENABLE();
  40. HAL_GPIO_Init(LED_PORT, &GPIO_Config);
  41. }
  42. int main(void)
  43. {
  44. SystemInit();
  45. blinky::init();
  46. xTaskCreate(blinky::blinkTask, "blinky", configMINIMAL_STACK_SIZE * 4, NULL, tskIDLE_PRIORITY + 1, NULL);
  47. vTaskStartScheduler();
  48. for (;;);
  49. return 0;
  50. }
  51. extern "C" void vApplicationTickHook(void)
  52. {
  53. }
  54. extern "C" void vApplicationIdleHook(void)
  55. {
  56. }
  57. extern "C" void vApplicationMallocFailedHook(void)
  58. {
  59. taskDISABLE_INTERRUPTS();
  60. for(;;);
  61. }
  62. extern "C" void vApplicationStackOverflowHook(TaskHandle_t pxTask, char *pcTaskName)
  63. {
  64. (void) pcTaskName;
  65. (void) pxTask;
  66. taskDISABLE_INTERRUPTS();
  67. for(;;);
  68. }