| 模塊 | 核心寄存器類別 | 典型操作 |
| GPIO | MODER, OTYPER, OSPEEDR, PUPDR, IDR, ODR, BSRR, BRR | 模式配置、輸出高低電平、讀取輸入 |
| RCC (時鐘) | CR, CFGR, AHBxENR, APBxENR | 使能外設時鐘、配置系統時鐘源/PLL |
| 定時器 | CR1, PSC, ARR, CNT, CCRx, CCMRx, CCER, DIER, SR | 基本定時、PWM 輸出、輸入捕獲 |
| UART | CR1/2/3, BRR, ISR, TDR, RDR | 波特率設置、發送/接收、中斷/DMA |
| ADC | CR, SMPR, SQR, DR, ISR | 通道選擇、採樣時間、轉換觸發、讀取數據 |
| 中斷/NVIC | ISER, ICER, IPR, STIR | 中斷使能、優先級配置、軟件觸發 |
第三階段:標準庫/HAL 庫移植與使用 (第 6-7 天)
- 理解 CMSIS (核心層) → HAL/LL/Standard Peripheral Library (外設層) → BSP (板級支持包) 的分層架構。
- 學會用 CubeMX / 配置向導生成初始化代碼,專注應用邏輯。
- 掌握
HAL_GPIO_TogglePin, HAL_UART_Transmit, HAL_TIM_PWM_Start 等高頻 API。
第四階段:項目實戰與調試 (第 8-10 天)
- 最小系統跑通:LED 閃爍 → 按鍵掃描 → 串口打印 → 定時器中斷。
- 綜合項目:溫濕度采集 (I2C/SPI) → OLED 顯示 → 串口/藍牙/WiFi 上傳 → 手機 APP 查看。
- 調試技能:J-Link/ST-Link + Keil/IAR/VS Code Cortex-Debug → 斷點、觀察變量、實時表達式、故障分析 (HardFault)。
- 工程規範:模組化目錄、版本控制、編譯警告清零、靜態分析 (Cppcheck/MISRA C)、文檔生成 (Doxygen)。
推薦學習資源
- 開發板:STM32F103C8T6 (藍藥丸)、STM32F407、ESP32、GD32F103 (國產替代)。
- 教程:正點原子/野火/嵌入式 Linux 應用開發完全手冊 (韋東山)、STM32 官方培訓教程。
- 社區:CSDN、立創開發者社區、GitHub Awesome-Embedded、電磁兼容/信號完整性專欄。
避坑指南
- ❌ 只會調庫、不懂寄存器 → 遇到 Errata/庫 Bug 無法定位。
- ❌ 忽視
volatile → 編譯器優化導致寄存器讀寫失效。
- ❌ 中斷服務函數 (ISR) 做耗時操作/調用阻塞函數 → 系統卡死/優先級反轉。
- ❌ 不做時鐘樹配置、直接用默認 → 外設波特率/定時精度不準。
- ✅ 先手寫寄存器版 LED 閃爍,再用 HAL,建立底層直覺。
- ✅ 閱讀芯片 Reference Manual (RM) 和 Data Sheet (DS),查表比背誦可靠。
十天建立知識骨架,百天精通工程實踐。單片機 C 語言,核心是**用軟件思維控制硬件行為**。
- 上一篇文章: C語言混合運算類型轉換規則:2.5 + 1 * 7 % 2 / 4 步步拆解
- 下一篇文章: C語言聯合體 union 詳解:共享內存、類型懲罰、协议解析實戰
Copyright ©
程式碼之家 All Rights Reserved