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)的迷宫小球(重力感应控制)游戏开发的更多相关文章

  1. cocos2d-x游戏开发实战原创视频讲座系列1之2048游戏开发

     cocos2d-x游戏开发实战原创视频讲座系列1之2048游戏开发 的产生 视持续更新中.... 视频存放地址例如以下:http://ipd.pps.tv/user/1058663622     ...

  2. Headless Android开发板的调试及远程显示和控制

    最近在调试msm8996的开发板,由于主板和LCD子板还没回来,所以先回的核心板算是个Headless的Android Device.核心板有独立供电,另外还有USB Type-C.FAN.HDMI. ...

  3. CC2540开发板学习笔记(六)——AD控制(自带温度计)

    一.实验目的 将采集的内部温度传感器信息通过串口发送到上位机 二.实验过程 1.寄存器配置 ADCCON1(0XB4)ADC控制寄存器1 BIT7:EOC   ADC结束标志位0:AD转换进行中    ...

  4. unity3D游戏开发实战原创视频讲座系列13之帽子戏法游戏开发(预告)

    文件夹 第一讲  游戏演示项目创建 第二讲 游戏场景的编辑 第三讲  帽子的移动 第四讲  炮弹的产生 第六讲  游戏界面的完好 第七讲 各种UI的制作 第八讲  分数和爆炸特效   视持续更新中.. ...

  5. unity3D游戏开发实战原创视频讲座系列11之相扑游戏开发并公布到Win\WP8

     解说文件夹 第一讲 游戏的演示和资源介绍 第二讲 场景的建设 第三讲 玩家的移动 第四讲 对手的AI(让对手动起来) 第五讲 游戏的管理(上) 第六讲 游戏的管理(下) 第七讲 公布到Win8系 ...

  6. 4418开发板基于Linux-c测试程序的编译和运行

    基于iTOP4418开发板的Linux-c的测试程序iTOP-4418 开发板可以运行的文件系统很多,在具体的文件系统上实现特定功能前,可以使用 Linux-c 程序来测试硬件以及驱动.而且这些程序很 ...

  7. 基于uFUN开发板的心率计(一)DMA方式获取传感器数据

    前言 从3月8号收到板子,到今天算起来,uFUN到手也有两周的时间了,最近利用下班后的时间,做了个心率计,从单片机程序到上位机开发,到现在为止完成的差不多了,实现很简单,uFUN开发板外加一个Puls ...

  8. 漫谈LiteOS之开发板-LiteOS移植(基于GD32450i-EVAL)

    1 为什么移植? 嵌入式设备的芯片型号和外设的差异较大,资源有限.而RTOS无法适配集成所有的驱动,因此会先适配部分开发板,然后通过移植使得适配更多的开发板. 可移植性是嵌入式操作系统与普通操作系统的 ...

  9. 【STM32-V5】STM32F407开发板开源, 丰富软件资源, 强劲硬件配置, 配套500实例, 10套手册带视频教程2019-12-12

    淘宝购买地址:购买地址链接 从2013年5月份发布至今,开发板硬件更新过6个版本,软件资料更新过85次.当前标准库最新版本V8.8,HAL库最新版本V1.1 安富莱微信公共平台,欢迎大家关注(打造高质 ...

随机推荐

  1. [转载]mongoDB学习笔记——存取图片(C#)

    作为一个NoSql数据库的代表,存取多媒体数据,应该是强项吧?那么,图片在mongoDB里是如何存取的呢?(其实,关系型数据库存取图片也一点问题没有,所以我看NoSql的强项不在于是否存储多媒体,而在 ...

  2. spoj 665

    直接判  没什么算法  也没什么技巧  水水~~ #include <cstdio> #include <cstring> #include <algorithm> ...

  3. python检测文件是否更新

    import os import time filename = "test.txt" info = os.stat(filename) if time.time()-info.s ...

  4. iOS利用HealthKit框架从健康app中获取步数信息

    微信和QQ的每日步数最近十分火爆,我就想为自己写的项目中添加一个显示每日步数的功能,上网一搜好像并有相关的详细资料,自己动手丰衣足食. 统计步数信息并不需要我们自己去实现,iOS自带的健康app已经为 ...

  5. Qt之高级网络操作(HTTP/FTP快速上手)Qt之QHttpPart和QHttpMultiPart

    http://blog.csdn.net/u011012932/article/details/52535755 http://blog.csdn.net/u011012932/article/det ...

  6. WPF之小动画一

    定义动画: 直接使用Element进行BeginAnimation DoubleAnimation animation = new DoubleAnimation(); animation.By = ...

  7. 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 ...

  8. sc.exe管理系统服务

    sc.exe管理系统服务 下面介绍SC,SC QC,and SC QUERY sc.exe create HomerSatelliteDesktopGC binPath= "D:XXXXXX ...

  9. 查看Vim的option变量的值

    以t_Co变量为例,最好用 :echo &t_Co 也可以使用 :set t_Co?,但是漏打?的话就会设置,得不偿失 要想知道在哪里这个变量被设置的,用 :verbose set t_Co? ...

  10. '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 ...