基于野火M3开发板(STM32F103VET6)的迷宫小球(重力感应控制)游戏开发
2013-03-03
這是研一上學期《實時嵌入式系統(tǒng)實驗》課程的大作業(yè),是利用野火板的資源,加上一個AHRS(Attitude and Heading Reference System,姿態(tài)航向系統(tǒng)參考模塊)模塊,利用重力感應(yīng)控制小球在迷宮中前進。
重力感應(yīng)模塊。開始,我在網(wǎng)上買了一個野火版的擴展模塊——MMA7455三軸加速度傳感器,36塊錢,I2C總線。
野火附贈例程里相關(guān)例子,用的I2C1(STM32F103VET6有兩個硬件I2C,I2C1和I2C2),經(jīng)測試可用。但是遇到一個問題,I2C1的PB6-I2C1_SCL和PB7-I2C1_SDA兩個引腳被觸摸屏XPT2046的信號線占用(PB6:XPT2046-INT ,PB7:XPT2046-CS),使用I2C2總是遇到錯誤,想用軟件I2C,在網(wǎng)上找到一些代碼,也沒移植成功,所以買到的MMA7455就不能用了。同組的同學從師兄那里借到一個AHRS模塊(介紹在此),核心是塊STM32F103T8,燒入程序后,模塊就能把解算出的當前俯仰、橫滾、航向、氣壓高度和溫度數(shù)據(jù)通過串口源源不斷發(fā)送出來。相對于兩個軸的傾角數(shù)據(jù)(俯仰角和滾轉(zhuǎn)角)對于我足矣,所以我修改了發(fā)送協(xié)議,讓模塊只發(fā)送俯仰角和滾轉(zhuǎn)角。原來的數(shù)據(jù)是在串口助手上顯示的,看起來是浮點型,本質(zhì)是字符串,我不需要這么高的精度,所以我把它平移若干位,變成8位整形數(shù)據(jù),并修改了發(fā)送頻率,大約(采用軟件延時)5Hz。 為方便調(diào)試,我讓AHRS模塊的數(shù)據(jù)通過USART3發(fā)到野火板的同時,野火板通過USART1把數(shù)據(jù)轉(zhuǎn)發(fā)PC,在PC串口助手上顯示。接收可用USART_ReceiveData()完成,發(fā)送可用庫函數(shù)USART_SendData()完成,注意需等待確實發(fā)送完畢再進行下一步,不然容易出錯,而且收發(fā)的數(shù)據(jù)都是uint16_t型。
if(USART_GetFlagStatus(USART3, USART_FLAG_RXNE)==SET); //確認收到數(shù)據(jù)
a=USART_ReceiveData(USART3);//接受數(shù)據(jù)
USART_SendData(USART1,a); //通過串口1轉(zhuǎn)發(fā)給PC
while(USART_GetFlagStatus(USART1, USART_FLAG_TC) == RESET); //等待發(fā)送完成
野火板我們使用了USART_1和USART_3、觸摸屏、SD卡、文件系統(tǒng)以及漢字字庫,根據(jù)野火自帶例程修改而來。在SD卡里放置背景圖片,BMP格式。在顯示不同圖片以及跳入、跳出循環(huán)時,注意觸摸標志位等的置位的清零。
PS:游戲準備和完成時顯示的圖片是由組里某位女同學用PhotoShop制作的,真心感覺漂亮,反正我是做不出來的……
轉(zhuǎn)載于:https://www.cnblogs.com/yffq/p/3602710.html
總結(jié)
以上是生活随笔為你收集整理的基于野火M3开发板(STM32F103VET6)的迷宫小球(重力感应控制)游戏开发的全部內(nèi)容,希望文章能夠幫你解決所遇到的問題。
- 上一篇: PDF转TXT文档怎么进行操作
- 下一篇: SolarWinds安装、配置、使用手册