STM32课程设计贪吃蛇
- 1、下载文档前请自行甄别文档内容的完整性,平台不提供额外的编辑、内容补充、找答案等附加服务。
- 2、"仅部分预览"的文档,不可在线预览部分如存在完整性等问题,可反馈申请退款(可完整预览的文档不适用该条件!)。
- 3、如文档侵犯您的权益,请联系客服反馈,我们会尽快为您处理(人工客服工作时间:9:00-18:30)。
STM32大作业报告
学生姓名:
学号:
所在院系:光电信息与计算机工程学院专业班级:
授课教师:
完成时间:2016年
前言
随着科学技术的不断进步,嵌入式近些年来逐渐兴起,其领域比较新,发展非常迅速,由于它属于新兴领域,接触的人并不是很多,但是嵌入式在各种电子设备上的应用越来越越广泛,并且各种电子设备也在朝着嵌入式微系统,智能化的方向前进。STM32系列是基于专为要求高性能、低成本、低功耗的嵌入式应用专门设计的ARM Cortex-M内核。作为21世纪的人才,为了与社会实际需要相衔接,提高我们的学习兴趣,利用STM32系列单片机进行了一次嵌入式系统设计。
摘要
在本次作业中采用STM32系列中的STM32F103RCT6微控制器芯片,采用ALIENTEK战舰STM32开发板,使用MiniSTM32开发板上的LCD 接口,来点亮TFTLCD,实现触摸屏功能。
一、课程设计任务要求
本次的课程设计目的是实现一个经典的贪吃蛇游戏,整个游戏实现功能分别为:
1、初始化程序。
2、随机红点、左转、右转、判断边框。
二、系统硬件设计
硬件设计原理图
根据此硬件设计图再结合软件设计就能做出此游戏。
三、系统软件实现
此次的课程设计在于开发个贪吃蛇游戏,其流程图如下图所示。
程序流程图
为方便介绍,此软件实现只给出主要程序部分:
1、本例程提供了硬件平台的初始化
GPIO是常规输入/输出端口,STM32F103RCT6有PA、PB、PC、PD、PE 共5个16位的GPIO。STM32的GPIO都可编程,具有很多复用功能。GPIO 可以配置为很多总模式,这些模式有:输入浮空、输入上拉、输入下拉、模拟输入、开漏输入、推挽输出、推挽复用、开漏复用。通过对GPIO寄存器编程,可以设置每个端口的工作模式。
24C02 EEPROM是开发板板载的2Kbit(256 个字节)EEPROM ,型号为:24C02,用于掉电数据保存。因为STM32 内部没有EEPROM,所开发板外扩了24C02,用于存储重要数据,用来做IIC 实验,该芯片直接挂在STM32 的IO 口上。
IIC(Inter-Integrated Circuit)总线是一种由PHILIPS 公司开发的两线式串行总线,用于连接微控制器及其外围设备。它是由数据线SDA 和时钟SCL
构成的串行总线,可发送和接收数据。在CPU 与被控IC 之间、IC 与IC 之间进行双向传送,高速IIC 总线一般可达400kbps 以上。IIC 总线在传送数据过程中共有三种类型信号,它们分别是:开始信号、结束信号和应答信号。
开始信号:SCL 为高电平时,SDA 由高电平向低电平跳变,开始传送数据。
结束信号:SCL 为高电平时,SDA 由低电平向高电平跳变,结束传送数据。
应答信号:接收数据的IC 在接收到8bit 数据后,向发送数据的IC 发出特定的低电平脉冲,表示已收到数据。CPU 向受控单元发出一个信号后,等待受控单元发出一个应答信号,CPU 接收到应答信号后,根据实际情况作出是否继续传递信号的判断。若未收到应答信号,由判断为受控单元出现故障。
/********************************************************************
* 名称:AT24CXX_Init(void)
* 功能:初始化IIC接口
********************************************************************/
//初始化IIC接口
void AT24CXX_Init(void)
{
IIC_Init();
}
void IIC_Init(void)
{
GPIO_InitTypeDef GPIO_InitStructure;
//RCC->APB2ENR|=1<<4;//先使能外设IO PORTC时钟
RCC_APB2PeriphClockCmd( RCC_APB2Periph_GPIOC, ENABLE );
GPIO_InitStructure.GPIO_Pin = GPIO_Pin_12|GPIO_Pin_11;
GPIO_InitStructure.GPIO_Mode = GPIO_Mode_Out_PP ; //推挽输出
GPIO_InitStructure.GPIO_Speed = GPIO_Speed_50MHz;
GPIO_Init(GPIOC, &GPIO_InitStructure);
IIC_SCL=1;
IIC_SDA=1;
}
/*******************************************************************
* 名称:void CMLCD_Init(void)
* 功能:初始化触摸屏的硬件接口
********************************************************************/
void CMLCD_Init(void)
{
GPIO_InitTypeDef GPIO_InitStructure;
RCC_APB2PeriphClockCmd(RCC_APB2Periph_GPIOC,ENABLE);//使能PORTC 时钟
GPIO_InitStructure.GPIO_Pin = GPIO_Pin_0|GPIO_Pin_3|GPIO_Pin_13;
GPIO_InitStructure.GPIO_Mode = GPIO_Mode_Out_PP; //设置成推免输出
GPIO_InitStructure.GPIO_Speed=GPIO_Speed_50MHz;
GPIO_Init(GPIOC, &GPIO_InitStructure);//初始化GPIOC 0 3 13
GPIO_InitStructure.GPIO_Pin =GPIO_Pin_2|GPIO_Pin_1; //初始化GPIOC 2 1 GPIO_InitStructure.GPIO_Mode=GPIO_Mode_IN_FLOATING;//浮空输入
GPIO_InitStructure.GPIO_Speed=GPIO_Speed_50MHz;
GPIO_Init(GPIOC, &GPIO_InitStructure);
TPEN=1;
}
2、贪吃蛇功能控制
SPI是串行外设端口,是一种同步串行外设端口,它可以使MCU与各种外围设备以串行方式进行通信、交换信息。STM32的SPI支持全双工同步传输,可选择以8或16位传输帧格式进行传输,支持多种模式。
USART为STM32的同步异步接收器。它提供了一种灵活的方法与使用异步串行数据格式的外部设备之间进行全双工数据交换。USART利用分数波特率发生器提供宽范围的波特率选择。另外,它还允许多处理器通信。USART也可以使用DMA方式直接将接受的数据存储到内存或从内存中批量发送数据,也支持多种中断方式。
TFT-LCD 即薄膜晶体管液晶显示器。其英文全称为:Thin Film
Transistor-Liquid CrystalDisplay。TFT-LCD 与无源TN-LCD、STN-LCD 的简单矩阵不同,它在液晶显示屏的每一个象素上都设置有一个薄膜晶体管(TFT),可有效地克服非选通时的串扰,使显示液晶屏的静态特性与扫描线数无关,因此大大提高了图像质量。TFT-LCD 也被叫做真彩液晶显示器。ALIENTEK 提供的2.8寸TFTLCD 模块,其驱动芯片有很多种类型,比如
有:ILI9341/ILI9325/RM68042/RM68021/ILI9320/ILI9328/LGDP4531/LGDP45 35/SPFD5408/SSD1289/1505/B505/C505/NT35310/NT35510 等。
LED(DS0 和DS1)。其电路在ALIENTEK MiniSTM32开发板上默认是已经连接好了的。DS0接PA8,DS1接PD2。
/********************************************************************
* 名称:int main(void)
* 功能:主函数