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 ✅
🧪 程式碼驗證 - Blink LED
在 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 閃爍)