《2022年基于STM32--μCOS-II贪吃蛇的设计课程设计.docx》由会员分享,可在线阅读,更多相关《2022年基于STM32--μCOS-II贪吃蛇的设计课程设计.docx(42页珍藏版)》请在taowenge.com淘文阁网|工程机械CAD图纸|机械工程制图|CAD装配图下载|SolidWorks_CaTia_CAD_UG_PROE_设计图分享下载上搜索。
1、精品学习资源邯郸学院课程设计题 目 基于 STM32- C/OS-II 贪吃蛇地设计学 生 20210441032028解斐20210441032025朱利昭20210441032002徐雷指导老师 张志来 讲师年 级 2021 级专 业 电子信息工程二级学院(系、部) 信息工程学院邯郸学院信息工程学院(系、部)2021 年 7 月基于 STM32- C/OS-II 贪吃蛇地设计摘 要进入新世纪地 TFT 液晶显示屏地技术和产业都取得了长足地进展,作为重要地现代信息,发布媒体之一 TFT 液晶显示屏在证券交易、金融、交通、体育、广告等领域被广泛欢迎下载精品学习资源地应用 .相伴社会化信息地推动
2、, TFT 液晶屏技术也在不断地推陈出新,应用领域愈加广 泛.现基于 STM32 地 TFT 液晶显示可以更好地满意各种需求,也更便于操作和实现.基于STM32 在 TFT 液晶屏幕上可显示文本及图形,包括汉字和时钟显示.关键词: TFT 液晶显示 STM32 开发板C/OS-II 贪吃蛇目 录摘 要0前 言21 背景介绍21.1 选题背景21.2 MiniSTM32 开发板介绍22 系统硬件设计32.1 开发板简介32.2 LED 灯 52.3 按键92.4 TFTLCD 模块93 系统软件设计133.1 LED 驱动133.2 按键驱动133.3 TFT-LCD 驱动153.4 贪吃蛇实现
3、 C语言代码173.5 uC/OS-II软件设计22结论26参考文献 27欢迎下载精品学习资源前 言目前已有超过 85地无线通信设备采纳了 ARM 技术, ARM 以其高性能和低成本, 在该领域地位置日益巩固.ARM 在此方面地应用如:手提式运算机、移动电话、PDA 等.随着宽带技术地推广,采纳ARM 技术地 ADSL 芯片正逐步获得竞争优势 .此外, ARM 在语音及视频处理上进行了优化,并获得广泛支持.UC/OS-II 由 Micrium公司供应,是一个可移植、可固化地、可裁剪地、占先式多任务实时内核,它适用于多种微处理器,微掌握器和数字处理芯片(已经移植到超过100 种以上地微处理器应用
4、中) .同时,该系统源代码开放、干净、一样,注释详尽,适合系统开发. UC/OS-II 已经通过联邦航空局( FAA )商用航行器认证,符合航空无线电技术委员会( RTCA) DO-178B 标准.1 背景介绍1.1 选题背景随着信息技术地飞速进展,形式多样地数字化产品已经开头成为继PC 机后地信息处理工具,在这种数字化潮流下,嵌入式系统已成为当前讨论和应用地热点之一,嵌入式手持设备地视图多媒体应用也越来越广泛.由于嵌入式系统地应用要求及成本因素打算了嵌入式系统在系统资源 , 包括硬件资源和软件资源方面都是特别精简和高效地.1.2 MiniSTM32 开发板介绍MiniSTM32设计精良,结构
5、小巧!板子地设计充分考虑了成本与功能这两个冲突面,再结合实际使用地体会及 STM32 地特点,最终确定了这样地设计.STM32 地优异性表达在如下几个方面:欢迎下载精品学习资源以 8 位机地价格,得到 32 位机,是 STM32 最大地优势 . STM32 拥有包括: FSMC、TIMER 、SPI、IIC 、USB、CAN 、IIS、SDIO、ADC、DAC 、RTC、DMA 等众多外设及功能,具有极高地集成度 . STM32 仅 M3 内核就拥有 F100、F101、F102、F103、F105、F107、F207、F217 等 8 个系列上百种型号,具有 QFN、LQFP、BGA 等封装
6、可供挑选 .同时 STM32 仍推出了 STM32L 和 STM32W 等超低功耗和无线应用型地M3 芯片. 84 个中断, 16 级可编程优先级,并且全部地引脚都可以作为中断输入.STM32 各个外设都有自己地独立时钟开关,可以通过关闭相应外设地时钟来降低功耗.STM32 地开发不需要昂贵地仿真器,只需要一个串口即可下载代码,并且支持SWD 和 JTAG 两种调试口 .SWD 调试可以为你地设计带来跟多地便利,只需要2 个 IO 口,即可实现仿真调试 .2 系统硬件设计2.1 开发板简介ALIENTEK MiniSTM32 开发板是一款迷你型地 STM32F103 开发板,小巧而不小气,简约
7、而不简洁 . 该开发板自推出以来,深得广大 STM32 学习者宠爱,总销量超过1.6W 套.目前最新版本为 V3.0,最新 MiniSTM32 开发板资源图如图 所示:欢迎下载精品学习资源ALIENTEK MiniSTM32开发板板载资源如下: CPU:STM32F103RBT6, LQFP64,FLASH:128K ,SRAM :20K; 1 个标准地 JTAG/SWD 调试下载口 1 个电源指示灯(蓝色) 2 个状态指示灯( DS0:红色, DS1:绿色) 1 个红外接收头,配备一款小巧地红外遥控器 1 个 IIC 接口地 EEPROM 芯片, 24C02,容量 256 字节 1 个 SP
8、I FLASH 芯片, W25X16,容量为 2M 字节 1 个 DS18B20/DS1820温度传感器预留接口 1 个标准地 2.4/2.8 寸 LCD 接口,支持触摸屏 1 个 OLED 模块接口 1 个 USB 串口,可用于程序下载和代码调试 1 个 USB SLAVE 接口,用于 USB 通信 1 个 SD 卡接口 1 个 PS/2接口,可外接鼠标、键盘欢迎下载精品学习资源 1 组 5V 电源供应 /接入口 1 组 3.3V 电源供应 /接入口 1 个启动模式挑选配置接口 2 个 2.4G 无线通信接口( 24L01 和 JF24C) 1 个 RTC 后备电池座,并带电池 1 个复位按
9、钮,可用于复位 MCU 和 LCD 3 个功能按钮,其中 WK_UP 兼具唤醒功能 1 个电源开关,掌握整个板地电源 3.3V 与 5V 电源 TVS 爱护,有效防止烧坏芯片 . 独创地一键下载功能 除晶振占用地 IO 口外,其余全部 IO 口全部引出,其中 GPIOA 和 GPIOB 按次序引出,整个板子尺寸为 8cm*10cm*2cm 板上除晶振外地全部地 IO 口全部引出,特殊仍有GPIOA 和 GPIOB 地 IO 口是按次序引出地,可以极大地便利大家扩展及使用,另外板载特殊地一键下载功能,防止了频繁设置B0、B1 带来地麻烦,直接在电脑上一键下载 . 板载十多种外设及接口,可以充分挖
10、掘STM32 地潜质.沉金 PCB+全新优质元器件 +定制全铜镀金排针 /排座+电源 TVS 爱护,坚如磐石 .各个接口都有丝印标注,使用起来一目了然;接口位置设计支协作理,便利顺手 .资源搭协作理,物尽其用 .2.2 LED 灯ALIENTEKMiniSTM32 开发板板载了 2 个 LED ,DS0 和 DS1, STM32 地 IO 口可以由软件配置成 8 种模式:1、输入浮空2、输入上拉3、输入下拉4、模拟输入5、开漏输出6、推挽输出7、推挽式复用功能8、开漏复用功能每个 IO 口可以自由编程,单 IO 口寄存器必需要按32 位字被拜访 .STM32 地许多 IO欢迎下载精品学习资源口
11、都是 5V 兼容地,这些 IO 口在与 5V 电平地外设连接地时候很有优势,具体哪些 IO 口是 5V 兼容地,可以从该芯片地数据手册管脚描述章节查到( I/O Level 标 FT 地就是 5V 电平兼容地) .STM32 地每个 IO 端口都有 7 个寄存器来掌握 .他们分别是:配置模式地 2 个 32 位地端口配置寄存器 CRL 和 CRH;2 个 32 位地数据寄存器 IDR 和 ODR;1 个 32 位地置位 /复位寄存器 BSRR;一个 16 位地复位寄存器 BRR; 1 个 32 位地锁存寄存器 LCKR ;这里我们仅介绍常用地几个寄存器,我们常用地 IO 端口寄存器只有 4 个
12、: CRL、CRH、IDR、ODR.CRL 和 CRH 掌握着每个 IO 口地模式及输出速率 .端口低配置寄存器 CRL 地描述,如下图所示:欢迎下载精品学习资源该寄存器地复位值为0X4444 4444,从上图可以看到,复位值其实就是配置端口为浮空输入模式 .从上图仍可以得出: STM32 地 CRL 掌握着每个 IO 端口( AG)地低 8 位地模式.每个 IO 端口位置占用 CRL 地 4 个位,高两位为 CNF,低两位为 MODE. 这里我们可以记住几个常用地配置,比如0X0 表示模拟输入模式( ADC 用)、0X3 表示推挽输出模式(做输出口用, 50M 速率)、 0X8 表示上/下拉
13、输入模式(做输入口用)、0XB 表示复用输出(使用 IO 口地其次功能, 50M 速率) .CRH 地作用和 CRL 完全一样,只是 CRL 掌握地是低 8 位输出口,而 CRH 掌握地是高 8 位输出口 .IDR 是一个端口输入数据寄存器,只用了低16 位.该寄存器为只读寄存器,并且只能以 16 位地势式读出 .该寄存器各位地描述如下图所示:欢迎下载精品学习资源要想知道某个 IO 口地状态,你只要读这个寄存器,再看某个位地状态就可以了.ODR 是一个端口输出数据寄存器,也只用了低16 位.该寄存器为可读写,从该寄存器读出来地 数据可以用于判定当前 IO 口地输出状态 .而向该寄存器写数据,就
14、可以掌握某个IO 口地输出电平 .该寄存器地各位描述如下图所示:ALIENTEK MiniSTM32开发板板载地 LED 硬件连接:欢迎下载精品学习资源2.3 按键ALIENTEK MiniSTM32开发板总共有 3 个按键,其原理图如下:KEY0 和 KEY1 用作一般按键输入,分别连接在PC5 和 PA15 上,其中 PA15 和JTDI 共用了,所以,在使用 KEY0和 KEY1 地时候,就不能使用 JTAG 来调试了,但是可以用 SWD 调试,这点在使用地时候要留意.KEY0 和 KEY1 仍和 PS/2 地 DAT 和 CLK 线共用. WK_UP 按键连接到 PA0STM32 地
15、WKUP 引脚,它除了可以用作一般输入按键外,仍可以用作 STM32 地唤醒输入 .该按键是高电平触发地 .由于 PA0 仍是 DS18B20 地输入引脚,而 18B20 是有上拉电阻地,所以在使用WK_UP 按键地时候,请肯定要断开PA0 和 DS18B20 地跳线帽 .2.4 TFTLCD 模块TFT-LCD 即薄膜晶体管液晶显示器 .其英文全称为: Thin Film Transistor-Liquid Crystal Display.TFT-LCD 与无源 TN-LCD 、STN-LCD 地简洁矩阵不同,它在液晶显示屏地每一个象素上都设置有一个薄膜晶体管( TFT),可有效地克服非选通
16、时地串扰,使显示液晶屏地静态特性与扫描线数无关,因此大大提高了图像质量.TFT-LCD 也被叫做真彩液晶显示器.该模块有如下特点:1, 2.4 /2.两8 种大小地屏幕可选 .2, 320240 地辨论率 .3, 16 位真彩显示 .4,自带触摸屏,可以用来作为掌握输入.欢迎下载精品学习资源5,通用地接口,除了ALIENTEKMiniSTM32开发板,该液晶模块仍可以使用在优异特、 STMSKY 、红牛等开发板上 .ALIENTEK MiniSTM32 开发板地该模块采纳地是显尚光电地 DST2001PH TFTLCD , DST2001PH 地掌握器为 ILI9320 ,采纳 26 万色地
17、TFTLCD 屏,辨论率为 320240,采纳 16 位地 80 并口.CS: TFTLCD 片选信号 . WR:向 TFTLCD 写入数据 . RD:从 TFTLCD 读取数据 . D15:0 :16 位双向数据线 . RST:硬复位 TFTLCD.RS:命令 /数据标志( 0,读写命令; 1,读写数据) .80 并口在上一节我们已经有具体地介绍了,这里我们就不在介绍,需要说明地是, TFTLCD 模块地 RST 信号线和 OLED 模块一样,也是直接接到 STM32 地复位脚上,并不由软件掌握,这样可以省下来一个IO 口.另外我们仍需要一个背光掌握线来掌握TFTLCD 地背光 .所以,我们
18、总共需要地 IO 口数目为 21 个.模块地掌握器为 ILI9320 (可能为其他型号,但是他们地设置很相像,除了初始化序列有些区分,其他大都是一摸一样地,这里仅以9320 为例介绍),该掌握器自带显存, 其显存总大小为 172820(240*320*18/8 ),即 18 位模式( 26 万色)下地显存量 .模块地16 位数据线与显寸地对应关系为 565 方式,如下图所示:欢迎下载精品学习资源最低 5 位代表蓝色,中间 6 位为绿色,最高 5 位为红色 .数值越大,表示该颜色越深 .接下来,我们介绍一下 ILI9320 地几个重要命令,由于 ILI9320 地命令许多,我们这里不行能一一介绍
19、,有爱好地大家可以找到 ILI9320 地 datasheet看看.里面对这些命令有具体地介绍 .这里我们要介绍地命令列表如下:这个命令,有两个功能,假如对它写,就最低位为OSC,用于开启或关闭振荡器 .而假如对它读操作,就返回地是掌握器地型号.这个命令最大地功能就是通过读它可以得到 掌握器地型号,而我们代码在知道了掌握器地型号之后,可以针对不同型号地掌握器,进行不同地初始化 .由于 93xx 系列地初始化,其实都比较类似,我们完全可以用一个代码兼容好几个掌握器 .R3,入口模式命令 .我们重点关注地是I/D0 、I/D1 、AM 这 3 个位,由于这 3 个位掌握了屏幕地显示方向 .AM :
20、掌握 GRAM 更新方向 .当 AM=0 地时候,地址以行方向更新 .当 AM=1 地时候, 地址以列方向更新 .I/D1:0 :当更新了一个数据之后,依据这两个位地设置来掌握地址计数器自动增加/欢迎下载精品学习资源削减 1,其关系如下图:通过这几个位地设置,我们就可以掌握屏幕地显示方向了 .R7,显示掌握命令 .该命令 CL 位用来掌握是 8 位彩色,仍是 26 万色.为 0 时 26 万色,为 1 时八位色 .D1、D0、BASEE 这三个位用来掌握显示开关与否地 .当全部设置为 1 地时候开启显示,全 0 是关闭.我们一般通过该命令地设置来开启或关闭显示器,以降低功耗.R32, R33
21、, 设置 GRAM地行地址 和列地 址.R32 用于设置列地址( X 坐标, 0239), R33 用于设置行地址( Y 坐标, 0319) .当我们要在某个指定点写入一个颜色地时候,先通过这两个命令设置到改点,然后写入颜色值就可以了.R34,写数据到 GRAM命令,当写入了这个命令之后,地址计数器才会自动地增加和削减 .该命令是我们要介绍地这一组命令里面唯独地单个操作地命令,只需要写入该值就可以了,其他地都是要先写入命令编号,然后写入操作数.R80R83,行列 GRAM 地址位置设置 .这几个命令用于设定你显示区域地大小,我们整个屏地大小为 240*320,但是有时候我们只需要在其中地一部分
22、区域写入数据,假如用先写坐标,后写数据这样地方式来实现,就速度大打折扣.此时我们就可以通过这几个命欢迎下载精品学习资源令,在其中开创一个区域,然后不停地丢数据,地址计数器就会依据R3 地设置自动增加 /削减,这样就不需要频繁地写地址了,大大提高了刷新地速度.3 系统软件设计3.1 LED 驱动/初始化 PA8 和 PD2 为输出口 .并使能这两个口地时钟/LED IO 初始化void LED_InitvoidRCC-APB2ENR|=1APB2ENR|=1CRH&=0XFFFFFFF0 ;GPIOA-CRH|=0X00000003 ;/PA8 推挽输出GPIOA-ODR|=1CRL&=0XFF
23、FFF0FF ;GPIOD-CRL|=0X00000300 ;/PD.2 推挽输出GPIOD-ODR|=1APB2ENR|=1CRL&=0XFFFFFFF0 ;/PA0 设置成输入GPIOA-CRL|=0X00000008 ;GPIOA-CRH&=0X0F0FFFFF ;/PA13,15 设置成输入GPIOA-CRH|=0X80800000 ;GPIOA-ODR|=1ODR|=1KEY1KEY2. u8 KEY_Scanvoidstatic u8 key_up=1;/按键按松开标志JTAG_SetJTAG_SWD_DISABLE ;ifkey_up&KEY0=0|KEY1=0|KEY2=1/d
24、elay_ms10;/去抖动key_up=0; ifKEY0=0JTAG_SetSWD_ENABLE ;return 1;else ifKEY1=0欢迎下载精品学习资源JTAG_SetSWD_ENABLE ;return 2;else ifKEY2=1JTAG_SetSWD_ENABLE ;return 3;else ifKEY0=1&KEY1=1&KEY2=0key_up=1;JTAG_SetSWD_ENABLE ;return 0;/ 无按键按下3.3 TFT-LCD 驱动/画笔颜色#define WHITE#define BLACK0xFFFF0x0000#define BLUE#def
25、ine BRED0x001F0XF81F#define GRED0XFFE0#define GBLUE#define RED0xF8000X07FF#define MAGENTA0xF81F #define GREEN0x07E0#define CYAN0x7FFF #define YELLOW0xFFE0#define BROWN0XBC40 / 棕色欢迎下载精品学习资源#define BRRED0XFC07 /棕红色#define GRAY0X8430 /灰色/GUI 颜色#define DARKBLUE0X01CF /深蓝色#define LIGHTBLUE0X7D7C /浅蓝色#def
26、ine GRAYBLUE0X5458 /灰蓝色/以上三色为 PANEL 地颜色#define LIGHTGREEN0X841F /浅绿色/#define LIGHTGRAY0XEF5B / 浅灰色 PANNEL#define LGRAY0XC618 /浅灰色 PANNEL, 窗体背景色#define LGRAYBLUE0XA651 / 浅灰蓝色 中间层颜色 #define LBBLUE0X2B12 / 浅棕蓝色 挑选条目地反色 欢迎下载精品学习资源extern u16 BACK_COLOR, POINT_COLOR ;void LCD_Initvoid ;void LCD_DisplayOnv
27、oid ;void LCD_DisplayOffvoid ;void LCD_Clearu16 Color ;void LCD_SetCursoru16 Xpos, u16 Ypos;void LCD_Scan_Diru8 dir ;void LCD_DrawPointu16 x,u16 y ;/画点u16 LCD_ReadPointu16 x,u16 y; /读点void Draw_Circleu16 x0,u16 y0,u8 r;void LCD_DrawLineu16 x1, u16 y1, u16 x2, u16 y2;void LCD_DrawRectangleu16 x1, u16
28、 y1, u16 x2, u16 y2;void LCD_Fillu16 sx,u16 sy,u16 ex,u16 ey,u16 color;void LCD_ShowCharu16 x,u16 y,u8 num,u8 size,u8 mode;/显示一个字符欢迎下载精品学习资源void LCD_ShowNumu16 x,u16 y,u32 num,u8 len,u8 size; /显示一个数字void LCD_Show2Numu16 x,u16 y,u16 num,u8 len,u8 size,u8 mode; /显示 2 个数字void LCD_ShowStringu16 x,u16 y,
29、const u8 *p;/显示一个字符串 ,16 字体欢迎下载精品学习资源u16 LCD_RD_DATAvoid ;/读取 LCD 数据void LCD_WriteRegu8 LCD_Reg, u16 LCD_RegValue;u16 LCD_ReadRegu8 LCD_Reg;void LCD_WriteRAM_Preparevoid ;void LCD_WriteRAMu16 RGB_Code ;u16 LCD_ReadRAMvoid ;u16 LCD_BGR2RGBu16 c;3.4 贪吃蛇实现 C 语言代码#include snake.h #include lcd.h #include
30、 key.h extern u8 key_value;u8 key_temp;extern int dir_x,dir_y ;#define SNAKE_MAX_LONG 10/最大长度 10 structu8u8XSNAKE_MAX_LONGYSNAKE_MAX_LONG;u8Long;u8u8Life ;Score;u8Level;Snake;/蛇结构体structu8 X;u8 Y;欢迎下载精品学习资源u8 Yes;Food;/食物结构体/绘制小方块, 8*8 void Turn_Offu8 x,u8 yLCD_Fillx*8,y*8,x*8+8,y*8+8,BLACK; /8*8 小矩
31、形void Turn_Onu8 x,u8 yLCD_Fillx*8,y*8,x*8+8,y*8+8,RED;/8*8 小矩形/初始化贪吃蛇 void Snake_Initvoidu8 i;/*初始化蛇参数 */Snake.Long=2;/定义初始化蛇地长度Snake.Life=0;/初始化蛇仍活着Snake.Score=0;Food.Yes=1;/放食物标志fori=0 ;iSnake.Long;i+/初始化蛇位置置Snake.Xi=i+14 ;Snake.Yi=7 ;fori=0 ;iSnake.Long;i+/将蛇画出来Turn_OnSnake.Xi,Snake.Yi ;欢迎下载精品学习资
32、源void Snake_Moveint dir_x,int dir_y/ 移动蛇u8 i;Turn_OffSnake.X0,Snake.Y0 ;/向上 fori=0 ;iSnake.Long-1;i+/初始化蛇位置置欢迎下载精品学习资源-1 0/向右 1 0Snake.Xi=Snake.Xi+1 ;/ 向左01Snake.Yi=Snake.Yi+1 ;/ 向下欢迎下载精品学习资源/向上 0 -1Snake.XSnake.Long-1=Snake.XSnake.Long-2+dir_x;Snake.YSnake.Long-1=Snake.YSnake.Long-2+dir_y; /蛇头向你要求地
33、方向移动fori=0 ;iSnake.Long;i+/将蛇画出来Turn_OnSnake.Xi,Snake.Yi ;void Food_Placeu8 Food_x,u8 Food_y/放/ 食物Food.X=Food_x;Food.Y=Food_y;Turn_OnFood.X,Food.Y;void Run_Snakevoid/嬉戏运行欢迎下载精品学习资源u8 i;Snake_Movedir_x,dir_y;/判定是否吃到食物,如吃到长度加1,而且再放一个ifSnake.XSnake.Long-1=Food.X&Snake.YSnake.Long-1=Food.Y欢迎下载精品学习资源Snak
34、e.Long+;Snake.XSnake.Long-1=Food.X;Snake.YSnake.Long-1=Food.Y;Food.X=0;Food.Y=0;Snake.Score+=1;Food.Yes= 1; /吃完一个后,再放一个食物LCD_ShowNum50,300,u32Snake.Score,4,16;/显示分数欢迎下载精品学习资源ifFood.Yes=0 Food_PlaceFood.X,Food.Y;/放食物ifFood.Yes=1/ 获得随机食欢迎下载精品学习资源物坐标while1Food.X=rand%28+1;Food.Y=rand%28+1;fori=0 ;iSnak
35、e.Long;i+/将蛇画出来ifSnake.XSnake.Long=Food.X&Snake.YSnake.Long=Food.Y欢迎下载精品学习资源break;/假如放地食物和蛇身重合就跳出来,不放食物欢迎下载精品学习资源Food.Yes=0;break;fori=0 ;iSnake.Long;i+/将蛇画出来ifSnake.Xi=Snake.XSnake.Long&Snake.Yi=Snake.YSnake.LongGame_Over;/蛇头遇到蛇身,嬉戏终止ifSnake.XSnake.Long-1=30|Snake.YSnake.Long-1=33Game_Over;/delay_m
36、s300;void Game_Startvoid/u8 i;POINT_COLOR=WHITE ; /画笔颜色BACK_COLOR=BLACK ; /背景色/*绘制嬉戏界面 */欢迎下载精品学习资源LCD_Fill0,0,8,280,DARKBLUE;/Rectangle8,8-1,85,120,0xaa;框, 0-127LCD_Fill232,0,240,280,DARKBLUE ;/ LCD_Fill0,0,240,8,DARKBLUE ;/ 绘制一个矩形欢迎下载精品学习资源LCD_Fill0,272,240,280,DARKBLUE ;/LCD_ShowString20,300,Scor
37、e;/Show Score LCD_ShowString150,300,LEVEL ;/Show Level欢迎下载精品学习资源LCD_ShowNum50,300,u32Snake.Score,4,16;LCD_ShowNum180,300,u32Snake.Level,4,16;/显示分数欢迎下载精品学习资源void Game_OvervoidLCD_ClearBLACK ;LCD_ShowString60,150,GAME OVER. ;LCD_ShowString25,170,PRESS ENTER TO RESTART;LCD_ShowString60,190,SCORE:;欢迎下载精
38、品学习资源LCD_ShowNum100,190,u32Snake.Score,4,16; while1 ;/Game_Start;/Snake_Init;/显示分数欢迎下载精品学习资源3.5 uC/OS-II 软件设计uC/OS IIMicroControl Operation System Two是一个可以基于 ROM 运行地、可裁减地、抢占式、实时多任务内核,具有高度可移植性,特殊适合于微处理器和掌握器,适合许多商业操作系统性能相当地实时操作系统RTOS.为了供应最好地移植性能, uC/OS II 最大程度上使用 ANSI C 语言进行开发,并且已经移植到近40 多种处理器体系上,涵盖了从
39、 8 位到 64 位各种 CPU包括 DSP. uC/OS II 可以简洁地视为一个多任务调度器,在 这个任务调度器之上完善并添加了和多任务操作系统相关地系统服务,如信号量、邮箱等.其主要特点有公开源代码,代码结构清楚、明白,注释详尽,组织有条理,可移植性好,可裁剪,可固化 .内核属于抢占式,最多可以治理60 个任务 .从 1992 年开头,由于高度牢靠性、移植性和安全性, uC/OS II 已经广泛使用在从照相机到航空电子产品地各种应用中.欢迎下载精品学习资源 C/OS-II 可以大致分成核心、任务处理、时间处理、任务同步与通信,CPU 地移植等 5 个部分.(1 核心部分 OSCore.c
40、是操作系统地处理核心,包括操作系统初始化、操作系统 运行、中断进出地前导、时钟节拍、任务调度、大事处理等多部分.能够维护系统基本工作地部分都在这里 .(2 任务处理部分 OSTask.c任务处理部分中地内容都是与任务地操作亲密相关地. 包括任务地建立、删除、挂起、复原等等.由于 C/OS-II 是以任务为基本单位调度地,所 以这部分内容也相当重要 .(3 时钟部分 OSTime.cC/OS-II 中地最小时钟单位是 timetick(时钟节拍) .任务延时等操作是在这里完成地 .(4 任务同步和通信部分为大事处理部分,包括信号量、邮箱、消息队列、大事标志等部分;主要用于任务间地相互联系和对临界资源地拜访.(5 与 CPU 地接口部分是指 C/OS-II 针对所使用地 CPU 地移植部分 .由于 C/OS-II 是一个通用性地操作系统,所以对于关键问题上地实现,仍是需要依据具体CPU 地具体内容和要求作相应地移植 .这部分内容由于牵涉到 SP 等系统指针,所以通常用汇编语言编写 .主要包括中断级任务切换地底层实现、任务级任务切换地底层实现、时钟节