Skip to main content

STM32 RTOS 系列教學 - 第一篇:RTOS 簡介與 STM32CubeMX 設定

🎯 教學目標

  • 了解 RTOS 基本概念
  • 使用 STM32CubeMX 設定 FreeRTOS
  • 成功建立一個最小可運作的 RTOS 專案(Blink Task)

🧠 RTOS 是什麼?

RTOS(Real-Time Operating System)是一種具備即時性、多工與排程能力的作業系統,常用於嵌入式系統中。例如:FreeRTOS 是 STM32 上廣泛使用的 RTOS。

RTOS 特點:

  • 任務(Task) 切換快
  • 支援排程優先權
  • 支援中斷與同步機制(Semaphore、Queue 等)
  • 系統可預測性高

🛠 STM32CubeMX 設定 FreeRTOS

Step 1:建立新專案

  • 開啟 STM32CubeMX
  • 選擇你的晶片(如 STM32F103C8Tx)

Step 2:開啟 RTOS

  • 點選左邊選單 Middleware > FREERTOS
  • Enable FreeRTOS
  • Task Configuration → 建立一個名為 defaultTask 的任務,設為 StartDefaultTask
  • 建議 stack size: 128、priority: Normal

Step 3:設定 System Clock

  • 確保 HSE 或 HSI 有啟用並正確設定頻率(建議使用 72MHz)

Step 4:產生程式碼

  • 點選 Project Manager > Project,輸入專案名稱
  • Toolchain: 選擇你要的 IDE(如 STM32CubeIDE)
  • Generate Code ✅

StartDefaultTask 中加入簡單的 LED 閃爍測試:

void StartDefaultTask(void *argument)
{
  for(;;)
  {
    HAL_GPIO_TogglePin(GPIOC, GPIO_PIN_13);
    osDelay(500);
  }
}

小提醒: GPIO 必須在 CubeMX 中設定為 Output,否則 HAL_GPIO_TogglePin() 無效。


✅ 成功條件檢查

  • 程式編譯成功
  • 上電後 LED 以 0.5 秒頻率閃爍
  • 無 HardFault、卡住情形

🧩 下一篇預告

第 2 篇:使用多個 Task 並建立基礎的任務切換範例(雙 LED 閃爍)