zoukankan      html  css  js  c++  java
  • 基于野火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制作的,真心感觉漂亮,反正我是做不出来的……

  • 相关阅读:
    libevent
    /dev/poll, kqueue(2), event ports, POSIX select(2), Windows select(), poll(2), and epoll(4)
    Netty 系列之 Netty 高性能之道 高性能的三个主题 Netty使得开发者能够轻松地接受大量打开的套接字 Java 序列化
    How to Design a Good API and Why it Matters
    cloud native
    Service Mesh服务网格:是什么和为什么
    唯品会的Service Mesh三年进化史 2018 年 Service Mesh 元年,被誉为是下一代微服务架构
    干货 | 蚂蚁金服是如何实现经典服务化架构往 Service Mesh 方向的演进的?
    Gradle
    Why did we build Zuul? How We Use Zuul At Netflix
  • 原文地址:https://www.cnblogs.com/yffq/p/3602710.html
Copyright © 2011-2022 走看看