基于野火M3开发板(STM32F103VET6)的迷宫小球(重力感应控制)游戏开发
2013-03-03
这是研一上学期《实时嵌入式系统实验》课程的大作业,是利用野火板的资源,加上一个AHRS(Attitude and Heading Reference System,姿态航向系统参考模块)模块,利用重力感应控制小球在迷宫中前进。
重力感应模块。开始,我在网上买了一个野火版的扩展模块——MMA7455三轴加速度传感器,36块钱,I2C总线。
野火附赠例程里相关例子,用的I2C1(STM32F103VET6有两个硬件I2C,I2C1和I2C2),经测试可用。但是遇到一个问题,I2C1的PB6-I2C1_SCL和PB7-I2C1_SDA两个引脚被触摸屏XPT2046的信号线占用(PB6:XPT2046-INT ,PB7:XPT2046-CS),使用I2C2总是遇到错误,想用软件I2C,在网上找到一些代码,也没移植成功,所以买到的MMA7455就不能用了。同组的同学从师兄那里借到一个AHRS模块(介绍在此),核心是块STM32F103T8,烧入程序后,模块就能把解算出的当前俯仰、横滚、航向、气压高度和温度数据通过串口源源不断发送出来。相对于两个轴的倾角数据(俯仰角和滚转角)对于我足矣,所以我修改了发送协议,让模块只发送俯仰角和滚转角。原来的数据是在串口助手上显示的,看起来是浮点型,本质是字符串,我不需要这么高的精度,所以我把它平移若干位,变成8位整形数据,并修改了发送频率,大约(采用软件延时)5Hz。 为方便调试,我让AHRS模块的数据通过USART3发到野火板的同时,野火板通过USART1把数据转发PC,在PC串口助手上显示。接收可用USART_ReceiveData()完成,发送可用库函数USART_SendData()完成,注意需等待确实发送完毕再进行下一步,不然容易出错,而且收发的数据都是uint16_t型。
if(USART_GetFlagStatus(USART3, USART_FLAG_RXNE)==SET);
//确认收到数据
a=USART_ReceiveData(USART3);
//接受数据
USART_SendData(USART1,a);
//通过串口1转发给PC
while(USART_GetFlagStatus(USART1, USART_FLAG_TC) == RESET);
//等待发送完成
野火板我们使用了USART_1和USART_3、触摸屏、SD卡、文件系统以及汉字字库,根据野火自带例程修改而来。在SD卡里放置背景图片,BMP格式。在显示不同图片以及跳入、跳出循环时,注意触摸标志位等的置位的清零。
PS:游戏准备和完成时显示的图片是由组里某位女同学用PhotoShop制作的,真心感觉漂亮,反正我是做不出来的……
基于野火M3开发板(STM32F103VET6)的迷宫小球(重力感应控制)游戏开发的更多相关文章
- cocos2d-x游戏开发实战原创视频讲座系列1之2048游戏开发
cocos2d-x游戏开发实战原创视频讲座系列1之2048游戏开发 的产生 视持续更新中.... 视频存放地址例如以下:http://ipd.pps.tv/user/1058663622 ...
- Headless Android开发板的调试及远程显示和控制
最近在调试msm8996的开发板,由于主板和LCD子板还没回来,所以先回的核心板算是个Headless的Android Device.核心板有独立供电,另外还有USB Type-C.FAN.HDMI. ...
- CC2540开发板学习笔记(六)——AD控制(自带温度计)
一.实验目的 将采集的内部温度传感器信息通过串口发送到上位机 二.实验过程 1.寄存器配置 ADCCON1(0XB4)ADC控制寄存器1 BIT7:EOC ADC结束标志位0:AD转换进行中 ...
- unity3D游戏开发实战原创视频讲座系列13之帽子戏法游戏开发(预告)
文件夹 第一讲 游戏演示项目创建 第二讲 游戏场景的编辑 第三讲 帽子的移动 第四讲 炮弹的产生 第六讲 游戏界面的完好 第七讲 各种UI的制作 第八讲 分数和爆炸特效 视持续更新中.. ...
- unity3D游戏开发实战原创视频讲座系列11之相扑游戏开发并公布到Win\WP8
解说文件夹 第一讲 游戏的演示和资源介绍 第二讲 场景的建设 第三讲 玩家的移动 第四讲 对手的AI(让对手动起来) 第五讲 游戏的管理(上) 第六讲 游戏的管理(下) 第七讲 公布到Win8系 ...
- 4418开发板基于Linux-c测试程序的编译和运行
基于iTOP4418开发板的Linux-c的测试程序iTOP-4418 开发板可以运行的文件系统很多,在具体的文件系统上实现特定功能前,可以使用 Linux-c 程序来测试硬件以及驱动.而且这些程序很 ...
- 基于uFUN开发板的心率计(一)DMA方式获取传感器数据
前言 从3月8号收到板子,到今天算起来,uFUN到手也有两周的时间了,最近利用下班后的时间,做了个心率计,从单片机程序到上位机开发,到现在为止完成的差不多了,实现很简单,uFUN开发板外加一个Puls ...
- 漫谈LiteOS之开发板-LiteOS移植(基于GD32450i-EVAL)
1 为什么移植? 嵌入式设备的芯片型号和外设的差异较大,资源有限.而RTOS无法适配集成所有的驱动,因此会先适配部分开发板,然后通过移植使得适配更多的开发板. 可移植性是嵌入式操作系统与普通操作系统的 ...
- 【STM32-V5】STM32F407开发板开源, 丰富软件资源, 强劲硬件配置, 配套500实例, 10套手册带视频教程2019-12-12
淘宝购买地址:购买地址链接 从2013年5月份发布至今,开发板硬件更新过6个版本,软件资料更新过85次.当前标准库最新版本V8.8,HAL库最新版本V1.1 安富莱微信公共平台,欢迎大家关注(打造高质 ...
随机推荐
- [转载]mongoDB学习笔记——存取图片(C#)
作为一个NoSql数据库的代表,存取多媒体数据,应该是强项吧?那么,图片在mongoDB里是如何存取的呢?(其实,关系型数据库存取图片也一点问题没有,所以我看NoSql的强项不在于是否存储多媒体,而在 ...
- spoj 665
直接判 没什么算法 也没什么技巧 水水~~ #include <cstdio> #include <cstring> #include <algorithm> ...
- python检测文件是否更新
import os import time filename = "test.txt" info = os.stat(filename) if time.time()-info.s ...
- iOS利用HealthKit框架从健康app中获取步数信息
微信和QQ的每日步数最近十分火爆,我就想为自己写的项目中添加一个显示每日步数的功能,上网一搜好像并有相关的详细资料,自己动手丰衣足食. 统计步数信息并不需要我们自己去实现,iOS自带的健康app已经为 ...
- Qt之高级网络操作(HTTP/FTP快速上手)Qt之QHttpPart和QHttpMultiPart
http://blog.csdn.net/u011012932/article/details/52535755 http://blog.csdn.net/u011012932/article/det ...
- WPF之小动画一
定义动画: 直接使用Element进行BeginAnimation DoubleAnimation animation = new DoubleAnimation(); animation.By = ...
- No ongoing transaction. Did you forget to call multi?
2016-10-21 14:41:47,551 [ERROR] [http-nio-8032-exec-2] TransactionSynchronizationUtils:171 - Transac ...
- sc.exe管理系统服务
sc.exe管理系统服务 下面介绍SC,SC QC,and SC QUERY sc.exe create HomerSatelliteDesktopGC binPath= "D:XXXXXX ...
- 查看Vim的option变量的值
以t_Co变量为例,最好用 :echo &t_Co 也可以使用 :set t_Co?,但是漏打?的话就会设置,得不偿失 要想知道在哪里这个变量被设置的,用 :verbose set t_Co? ...
- 'ascii' codec can't encode characters in position 0-8: ordinal not in range(128)的解决办法
使用的python2.7,运行的时候出现了'ascii' codec can't encode characters in position 0-8: ordinal not in range(128 ...