1. Quick start STM32 FreeRTOS

In this example I used STM32F401CCU6 and STM32CubeIDE (Version: 1.17.0)

  1. Create Project

    File -> New -> STM32 Project

  2. Select MCU

    ../../_images/stmfreertos_001.png
  3. Setup Project

    Specify the location

    ../../_images/stmfreertos_002.png
  4. Setup PC13 as GPIO_Output

    PC13 is connected to LED on the board

  5. Setup RCC Low Speed Clock (LSE)

    ../../_images/stmfreertos_003.png
  6. Setup SYS Timebase source

    “При использовании FreeRTOS, в качестве базового таймера для HAL рекомендуется выбрать не SysTick (стоит по умолчанию), а другой.”

    STM32CubeMx. Быстрый старт с FreeRTOS для STM32

    ../../_images/stmfreertos_004.png
  7. Select FREERTOS with CMSIS_V2

    ../../_images/stmfreertos_005.png
  8. Create Tasks

    ../../_images/stmfreertos_006.png
  9. Enable USE_NEWLIB_REENTRANT

    ../../_images/stmfreertos_007.png
  10. Save project and Generate Code

    File -> Save

  11. Include some code into task functions

    void StartTask01(void *argument)
    {
      /* USER CODE BEGIN StartTask01 */
      /* Infinite loop */
      for(;;)
      {
        HAL_GPIO_TogglePin(GPIOC, GPIO_PIN_13);
        osDelay(500);
      }
      /* USER CODE END StartTask01 */
    }
    
  12. Save changes

    File -> Save

  13. Build and Run Project

    ../../_images/stmfreertos_008.png

1.1. References

  1. STM32CubeMx. Быстрый старт с FreeRTOS для STM32

  2. Лекция-практикум “SM32CubeIDE + FreeRTOS

  3. STM32 - программирование для начинающих. Пошагово. CubeMX CubeIDE