首頁
編程語言
C語言|JAVA編程
Python編程
網頁編程
ASP編程|PHP編程
JSP編程
數據庫
MYSQL數據庫|SqlServer數據庫
Oracle數據庫|DB2數據庫
您现在的位置: 程式碼之家 >> 編程語言 >  >> C語言 >> 關於C語言

基於野火 M3 (STM32F103VET6) 迷宮小球遊戲:重力感應控制開發實錄

     編輯:關於C語言

項目背景

研一上學期《實時嵌入式系統實驗》大作業。利用野火 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(軟件延時)。

通訊架構

// 野火板 USART3 接收 AHRS 數據,同時 USART1 轉發到 PC 調試
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 製作)。
  • 注意觸摸標志位在界面切換、進出循環時的置位/清零。

效果展示

遊戲運行照片

MMA7455 模塊

遊戲界面1

遊戲界面2

心得總結

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