項目背景
研一上學期《實時嵌入式系統實驗》大作業。利用野火 M3 開發板(STM32F103VET6)資源,外接 AHRS(姿態航向參考系統)模塊,通過重力感應控制小球在迷宮中滾動。
硬件選型與坑點
1. 首選 MMA7455 三軸加速度計(I2C1)
- 野火例程使用 I2C1(PB6/SCL、PB7/SDA),測試可用。
- 衝突:PB6、PB7 被觸摸屏 XPT2046 佔用(INT、CS)。
- 嘗試移植軟件 I2C 到 I2C2 失敗,最終放棄 MMA7455。
2. 替代方案:借用 AHRS 模塊(核心 STM32F103T8)
- 模塊內部融合算法輸出俯仰、橫滾、航向、氣壓高度、溫度。
- 僅需俯仰角與滾轉角(兩軸傾角)。
- 修改協議:只發送兩軸角度,浮點數 → 平移定點為 8 位整數,發送頻率 ~5 Hz(軟件延時)。
通訊架構
if (USART_GetFlagStatus(USART3, USART_FLAG_RXNE) == SET) {
a = USART_ReceiveData(USART3);
USART_SendData(USART1, a);
while (USART_GetFlagStatus(USART1, USART_FLAG_TC) == RESET);
}
- 收發均為
uint16_t 類型。
- 雙串口協同:USART3 接收傳感器,USART1 調試輸出。
軟件資源整合
- 基於野火例程修改:USART1/3、觸摸屏 XPT2046、SD 卡、FatFS 文件系統、漢字字庫。
- SD 卡存放 BMP 背景圖片(開始/結束界面由組員 PS 製作)。
- 注意觸摸標志位在界面切換、進出循環時的置位/清零。
效果展示




心得總結
- 硬件資源衝突是常態:引腳複用需提前規劃,查閱原理圖與數據手冊不可省略。
- 模塊化協議設計:傳感器數據精度、頻率、格式應按需定制,減少帶寬與解析開銷。
- 調試雙串口法:一路收數據、一路轉發 PC,極大提升協議調試效率。
- 團隊協作:UI 設計由美工同學完成,專業分工事半功倍。