main.cpp 1.6 KB

12345678910111213141516171819202122232425262728293031323334353637383940414243444546474849505152535455565758596061626364656667686970717273747576777879
  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. #endif
  18. static void blinky::blinkTask(void *arg)
  19. {
  20. for(;;)
  21. {
  22. vTaskDelay(500);
  23. HAL_GPIO_TogglePin(LED_PORT, LED_PIN);
  24. }
  25. }
  26. void blinky::init()
  27. {
  28. GPIO_InitTypeDef GPIO_Config;
  29. GPIO_Config.Mode = GPIO_MODE_OUTPUT_PP;
  30. GPIO_Config.Pull = GPIO_NOPULL;
  31. GPIO_Config.Speed = GPIO_SPEED_FREQ_HIGH;
  32. GPIO_Config.Pin = LED_PIN;
  33. LED_PORT_CLK_ENABLE();
  34. HAL_GPIO_Init(LED_PORT, &GPIO_Config);
  35. }
  36. int main(void)
  37. {
  38. SystemInit();
  39. blinky::init();
  40. xTaskCreate(blinky::blinkTask, "blinky", configMINIMAL_STACK_SIZE * 4, NULL, tskIDLE_PRIORITY + 1, NULL);
  41. vTaskStartScheduler();
  42. for (;;);
  43. return 0;
  44. }
  45. extern "C" void vApplicationTickHook(void)
  46. {
  47. }
  48. extern "C" void vApplicationIdleHook(void)
  49. {
  50. }
  51. extern "C" void vApplicationMallocFailedHook(void)
  52. {
  53. taskDISABLE_INTERRUPTS();
  54. for(;;);
  55. }
  56. extern "C" void vApplicationStackOverflowHook(TaskHandle_t pxTask, char *pcTaskName)
  57. {
  58. (void) pcTaskName;
  59. (void) pxTask;
  60. taskDISABLE_INTERRUPTS();
  61. for(;;);
  62. }