第1周:基礎搭建與GPIO控制
學習目標:建立開發環境,掌握最基礎的硬件控制能力
每日學習(2-3小時):
- 環境搭建(2天)
- 安裝Keil MDK-ARM + STM32CubeMX
- 使用CubeMX創建第一個工程(選擇STM32F103C8T6)
- 生成代碼并燒錄到開發板(LED點亮驗證)
- GPIO編程(3天)
- 推挽輸出/開漏輸出模式區別
- 使用
HAL_GPIO_WritePin()
控制LED - 按鍵輸入檢測(輪詢方式)
- 時鐘系統(2天)
- 理解HSI/HSE/PLL時鐘源
- 通過CubeMX配置72MHz系統時鐘
- 調試技巧(1天)
- 使用
printf
重定向到串口 - 基礎斷點調試
- 使用
核心掌握:
- 工程創建流程
- GPIO的8種工作模式
- 時鐘樹配置邏輯
- 基礎調試方法
第2周:通信協議與常用外設
學習目標:掌握數據交互與傳感器驅動
每日學習:
- USART串口(3天)
- 阻塞式發送/接收
- 中斷接收模式
- 與PC通信(使用串口助手)
- ADC采集(2天)
- 單通道電壓采集
- 多通道掃描模式
- 光敏電阻數據讀取
- 定時器基礎(3天)
- 定時中斷配置
- 基本PWM輸出
- 呼吸燈實現
- 項目框架(2天)
- 模塊化編程技巧
- 狀態機設計模式
核心掌握:
- 異步串口通信協議
- 模擬信號數字化處理
- 定時器中斷與PWM生成
- 代碼組織結構優化
第3周:中斷系統與高級應用
學習目標:實現高效系統控制
每日學習:
- 中斷系統(3天)
- EXTI外部中斷配置
- NVIC優先級管理
- 按鍵中斷消抖處理
- DMA傳輸(2天)
- 內存到外設數據傳輸
- ADC+DMA高效采集
- FreeRTOS基礎(3天)
- 任務創建與調度
- 信號量/消息隊列
- 多任務LED控制
- 低功耗模式(2天)
- STOP模式喚醒
- RTC鬧鐘中斷
核心掌握:
- 中斷嵌套與響應機制
- 零CPU占用的DMA傳輸
- 實時操作系統基礎
- 功耗優化策略
實戰項目路線(難度階梯)
第1周項目:
- 智能呼吸燈(GPIO+PWM)
- 使用PWM實現亮度漸變
- 強化:定時器配置、占空比計算
- 電子骰子(GPIO+外部中斷)
- 按鍵觸發隨機數生成
- 強化:中斷消抖、LED數碼管控制
第2周項目:
- 環境監測站(ADC+USART)
- 采集溫濕度并串口輸出
- 強化:傳感器校準、數據格式化
- 無線門鈴(定時器+中斷)
- 通過433MHz模塊實現遠程觸發
- 強化:RF解碼、低功耗設計
第3周項目:
- 多任務數據記錄儀(FreeRTOS+DMA)
- 同時記錄GPS數據與環境參數
- 強化:SD卡存儲、任務同步
學習資源包
- 速查手冊:
- STM32CubeMX配置速查表
- HAL庫函數速查手冊
- 硬件推薦:
- 主控板:STM32F103C8T6(藍色藥丸)
- 傳感器包:DHT11+光敏+MPU6050
- 調試工具:ST-Link V2 + 邏輯分析儀
- 調試技巧:
- 使用
SEGGER SystemView
分析RTOS任務 - 通過
STM32CubeMonitor
實時監測變量
- 使用
關鍵學習策略
- 逆向學習法:從CubeMX生成的代碼反向理解寄存器配置
- 模塊化開發:為每個外設創建獨立的
.c/.h
文件 - 版本控制:使用Git管理工程版本(每個項目一個分支)
- 硬件解剖:每周拆解一個經典開發板原理圖