main.cpp 2.1 KB

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