嵌入式实验三
嵌入式实验报告总结

嵌入式实验报告总结嵌入式实验报告总结近年来,嵌入式系统在各个领域中得到了广泛的应用。
嵌入式系统是指将计算机系统嵌入到其他设备或系统中,以实现特定功能的一种计算机系统。
在本次嵌入式实验中,我深入学习了嵌入式系统的原理和应用,并通过实际操作,加深了对嵌入式系统的理解。
实验一:嵌入式系统的基本概念和发展历程在本实验中,我们首先了解了嵌入式系统的基本概念和发展历程。
嵌入式系统的特点是紧凑、高效、实时性强,并且适用于各种各样的应用场景。
通过学习嵌入式系统的发展历程,我们了解到嵌入式系统在不同领域的应用,如智能家居、医疗设备、汽车电子等。
这些应用领域的嵌入式系统都有着各自的特点和需求,因此在设计嵌入式系统时需要根据具体应用场景进行优化。
实验二:嵌入式系统的硬件平台与软件开发环境在本实验中,我们学习了嵌入式系统的硬件平台和软件开发环境。
硬件平台是嵌入式系统的基础,包括处理器、内存、外设等。
而软件开发环境则提供了开发嵌入式系统所需的工具和库函数。
我们通过实际操作,搭建了嵌入式系统的硬件平台,并使用软件开发环境进行程序的编写和调试。
通过这个实验,我深刻理解了硬件平台和软件开发环境对嵌入式系统的影响,以及它们之间的协同工作。
实验三:嵌入式系统的实时操作系统在本实验中,我们学习了嵌入式系统的实时操作系统。
实时操作系统是嵌入式系统中非常重要的一部分,它能够保证系统对外界事件的响应速度和可靠性。
我们通过实际操作,学习了实时任务的创建和调度,以及实时操作系统的中断处理机制。
实时操作系统的学习让我更加深入地了解了嵌入式系统的实时性要求和相关的调度算法。
实验四:嵌入式系统的通信与网络在本实验中,我们学习了嵌入式系统的通信与网络。
嵌入式系统通常需要与其他设备或系统进行通信,以实现数据的传输和共享。
我们学习了嵌入式系统的通信协议和网络协议,如UART、SPI、I2C、TCP/IP等。
通过实际操作,我掌握了这些通信和网络协议的使用方法,以及在嵌入式系统中如何进行数据的传输和处理。
嵌入式系统原理实验三跑马灯

嵌入式系统原理实验三跑马灯(共4页)--本页仅作为文档封面,使用时请直接删除即可----内页可以根据需求调整合适字体及大小--实验三跑马灯实验实验目的:通过一个经典的跑马灯程序,了解 STM32F1 的 IO 口作为输出使用的方法。
通过代码控制 ALIENTEK 战舰 STM32 开发板上的两个 LED: DS0 和DS1 交替闪烁,实现类似跑马灯的效果内容要点:1.硬件设计本章用到的硬件只有LED(DS0 和DS1)。
其电路在ALIENTEK 战舰STM32F103 开发板上默认是已经连接好了的。
DS0 接PB5,DS1 接PE5。
所以在硬件上不需要动任何东西。
其连接原理图如图:2.软件设计跑马灯实验我们主要用到的固件库文件是:/stm32f10x_usart /其中头文件在每个实验中都要引入,因为系统时钟配置函数以及相关的外设时钟使能函数都在这个其源文件中。
和头文件在我们SYSTEM 文件夹中都需要使用到,所以每个实验都会引用。
首先,找到之前新建的Template 工程,在该文件夹下面新建一个HARDWARE 的文件夹,用来存储以后与硬件相关的代码,然后在HARDWARE 文件夹下新建一个LED 文件夹,用来存放与LED 相关的代码。
新建和文件,一个外设对应一个.h和.c文件。
在Manage Components 管理里面新建一个HARDWARE 的组,并把加入到这个组里面,将头文件的路径加入到工程里面一般的头文件有固定的格式,多个地方调用头文件会重复引用,为了避免头文件内容重复引用,一般通过预编译的方式来写头文件。
一般的格式如下:#ifndef __LED_H#define __LED_H……#endif第一次调用时会将#define下面这一节全部定义,重复调用时,下面的东西就不会被引用。
头文件里一般用来写函数声明或者宏定义,在源文件中再去定义具体的函数。
#ifndef __LED_H#define __LED_Hvoid LED_Init(void);#endif然后我们打开USER 文件夹下的工程(如果是使用的上面新建的工程模板,那么就是Template. uvprojx,大家可以将其重命名为LED. uvprojx),按新建按钮新建一个文件,然后保存在HARDWARE->LED 文件夹下面,保存为。
电子科技大学研究生嵌入式系统实验03

SetRelAlarm(Alarm200ms, 0, 200);
SetRelAlarm(Alarm500ms, 0, 500);
SetRelAlarm(Alarm1000ms, 0, 1000);
/*设置转换组0的结果缓存*/
Adc_SetupResultBuffer(0, &adc_buffer[0]);
0 ,
0,
0,
15,
1
},
{
(T_OSEK_TASK_Entry)FuncTask200ms,
Task200ms,
0 , //
0,
0,
14,
1
},
{
(T_OSEK_TASK_Entry)FuncTask500ms,
Task500ms,
0 ,
0,
0,
13,
1
},
{
(T_OSEK_TASK_Entry)FuncTask1000ms,
{
{
Task1ms,
#if (defined(OCC_ECC1) || defined(OCC_ECC2)) && defined(OCC_ALMSETEVENT)
0,
#endif
Counter1,
},
{
Task10ms,
#if (defined(OCC_ECC1) || defined(OCC_ECC2)) && defined(OCC_ALMSETEVENT)
MPC5634开发板接收,后者又将收到的字符重新通过串口输出。
本测试程序的目的是为验证MPC5634上的SCI驱动程序的正确性,主要验证其
嵌入式系统 实验报告

使能 IRQ 中断。
4 装载并使能外中断;
5 选用 DebugInExram 生成目标,然后编译连接工程。
6 选择【Project】->【Debug】,启动 AXD 进行 JTAG 仿真调试。
7 全速运行程序,LED 闪烁;
8 每一次按键 Key,蜂鸣器就会转换静音或鸣响状态。
四.测试数据及运行结果
1
五.总结
1.实验过程中遇到的问题及解决办法;
由于本次实验较简单,且我们之前学习的微机原理课程也进行了流水灯的设
计实验,所以对于本次实验,我完成地很顺利,在实验中没有遇到问题。
2.对设计及调试过程的心得体会。
本次实验是本学期该课程我们进行的第一次实验,总的来说,实验不是很难,
设计过程也相对简单,其主要目的是让我们熟悉一下实验环境,并且能在实验环
6
五.总结 1.实验过程中遇到的问题及解决办法;
实验第一次运行时,蜂鸣器一直处于鸣响状态,及时按了按键,蜂鸣器还是 一直鸣叫,不产生外中断。后来仔细检查了程序,发现原来是忘记使能 EINT0 中 断了,加上 VICIntEnable = 1<<0x0e 代码,程序就能正常运行了。 2. 对设计及调试过程的心得体会。
境下进行简单的实验操作,为之后的实验打下坚实的基础。
六.附录:源代码(电子版)
#include "config.h"
const uint32 LEDS8 = 0xFF << 18;//P1[25:18]控制 LED1~LED8,低电平点亮
const uint32 KEY = 1 << 16;
//P0.16 连接 KEY1
三.方案设计
① 启动 ADS1.2IDE 集成开发环境,选择 ARM Executable Image for lpc2131
嵌入式实验三 键盘检测控制实验

2
ቤተ መጻሕፍቲ ባይዱ
嵌入式技术及应用 实验三
实验三 键盘实验
一、 实验目的 掌握单片机系统中矩阵键盘的编程控制方法,学会实时程序的调试技巧。
二、 实验原理 键盘是单片机应用中常用的输入设备,在应用系统中,操作人员可通过键盘
向系统输入指令、地址和数据,实现简单的人机通信。 键盘实际上是一组按键开关的集合,平时总是处于断开状态,当按下键时它
才闭合。按键在闭合和断开时,触点会存在抖动现象,抖动时间一般为 5-10ms, 如下图示:
键盘的处理主要涉及以下 3 个方面的内容: 按键的识别
所接 I/O 口线是高还是低电平(根据连接情况) 抖动的消除
硬件消抖 软件消抖(延时) 判断键值 独立式键盘 矩阵式键盘 实验板电路原理图如下:
1
嵌入式技术及应用 实验三
三、 实验内容 按下 16 个矩阵键盘依次在数码管上显示 1-16 的平方。如按下第一个显示 1,
第二个显示 4...
四、
实验步骤 1、 按实验内容要求在 µ Vision 中创建项目,编辑、调试、编译程序。 2、 将编译生成的目标码文件(后缀为.Hex)下载到实验板上。 3、 观察实验运行结果并记录。
嵌入式系统实验内容(全)

实验一熟悉Linux开发环境一、实验目的1.熟悉Linux开发环境,学习Linux开发环境的配置和使用,掌握Minicom串口终端的使用。
2.学习使用Vi编辑器设计C程序,学习Makefile文件的编写和armv4l-unkonown-linux-gcc编译器的使用,以及NFS方式的下载调试方法。
3.了解UP-NETARM2410-S嵌入式实验平台的资源布局与使用方法。
4.初步掌握嵌入式Linux开发的基本过程。
二、实验内容本次实验使用Redhat Linux 9.0操作系统环境,安装ARM-Linux的开发库及编译器。
创建一个新目录,并在其中编写hello.c和Makefile文件。
学习在Linux 下的编程和编译过程,以及ARM开发板的使用和开发环境的设置。
下载已经编译好的文件到目标开发板上运行。
三、预备知识C语言的基础知识、程序调试的基础知识和方法,Linux的基本操作。
四、实验设备及工具(包括软件调试工具)硬件:UP-NETARM2410-S嵌入式实验平台、PC机Pentium 500以上, 硬盘10G以上。
软件:PC机操作系统REDHAT LINUX 9.0+MINICOM+ARM-LINUX开发环境五、实验步骤1、建立工作目录[root@zxt smile]# mkdir hello[root@zxt smile]# cd hello2、编写程序源代码在Linux下的文本编辑器有许多,常用的是vim和Xwindow界面下的gedit等,我们在开发过程中推荐使用vim,用户需要学习vim的操作方法,请参考相关书籍中的关于vim的操作指南。
Kdevelope、anjuta软件的界面与vc6.0 类似,使用它们对于熟悉windows环境下开发的用户更容易上手。
实际的hello.c源代码较简单,如下:#include <stdio.h>main(){printf(“hello world \n”);}我们可以是用下面的命令来编写hello.c的源代码,进入hello目录使用vi命令来编辑代码:[root@zxt hello]# vi hello.c按“i”或者“a”进入编辑模式,将上面的代码录入进去,完成后按Esc键进入命令状态,再用命令“:wq”保存并退出。
嵌入式Linux实验报告
嵌 入 式 程 序 设 计
实 验 报 告
评 语:
成绩
教 师:
年 月 日
班 级:
学 号:
姓 名:
地 点:EII-506
7)用命令service启动宿主机上的nfs服务,并用exportfs命令查看nfs的共享目录。然后在目标机上挂载nfs
8)在目标机中运行web_server_process。
9)打开宿主机的浏览器,输入http://192.168.0.5/file,查看执行结果
10)在宿主机的浏览器中输入http://192.168.0.5,查看执行结果。
unsigned long *CS1_Address, *CS2_Address;
structseg
{
char LED1_Val;
char LED2_Val;
char LED3_Val;
char LED4_Val;
char negative;
};
2)同时更新所有七段数码管驱动显示函数:CS1_address对应第一组七段数码管的位选信号,该组第一个数码管的段选信号保存在short变量的低8位,该组第二个数码管的段选信号保存在short变量的高8位。CS2_address对应第二组七段数码管,其余操作和第一组的七段数码管一致。
嵌入式Linux系统的启动过程分析
1)启动Bootloader
Bootloader是嵌入式系统的引导加载程序,它是系统上电后运行的第一段程序,其作用类似于PC机上的BIOS。在本系统中这段程序的起始地址为0x。Bootloader在完成初始化RAM、初始化串口、检测处理器类型、设置Linux启动参数后,开始调用Linux内核。本系统Linux内核镜像zImage放在Flash中,Bootloader首先把它拷贝到RAM中,然后跳转到RAM中对zImage进行解压缩。解压缩后启动内核。
嵌入式系统实验报告
嵌入式系统实验报告学号:姓名:班级:13电子信息工程指导老师:苏州大学电子信息学院2016年12月实验一:一个灯的闪烁1、实验要求实现PF6-10端口所连接的任意一个LED灯点亮2、电路原理图图1 LED灯硬件连接图3、软件分析RCC_Configuration(); /* 配置系统时钟*/GPIO_Configuration(); /* 配置GPIO IO口初始化*/ for(;;){GPIOF->ODR = 0xfcff; /* PF8=0 --> 点亮D3 */Delay(1000000);GPIOF->ODR = 0xffff; /* PF8=1 --> 熄灭D3 */Delay(1000000);4、实验现象通过对GPIOF8的操作,可以使LED3闪烁5、实验总结这是第一次使用STM32开发板,主要内容是对IO端口进行配置,点亮与IO端口相连接的LED灯,闪烁周期为2S。
通过本实验对STM32开发板的硬件原理有了初步了解。
实验二:流水灯1、实验要求实现PF6-10端口所连接的5个LED灯顺次亮灭2、电路原理图图1 流水灯硬件连接图3、软件分析int main(void){RCC_Configuration();/* 配置系统时钟*/GPIO_Configuration();/* 配置GPIO IO 口初始化*/for(;;){GPIOF->ODR = 0xffbf;/* PF6=0 --> 点亮LED1 */Delay(5000000);GPIOF->ODR = 0xff7f;/* PF7=0 --> 点亮LED2 */Delay(5000000);GPIOF->ODR = 0xfeff;/* PF8=0 --> 点亮LED3 */Delay(5000000);GPIOF->ODR = 0xfdff;/* PF9=0 --> 点亮LED4 */Delay(5000000);GPIOF->ODR = 0xfbff;/* PF10=0 --> 点亮LED5 */ }}4、实验现象LED1~LED5依次点亮,亮灭的时间间隔都为1S。
嵌入式实验报告
实验一 ARM汇编语言程序设计一、实验目的1.了解IAR Embedded Workbench 集成开发环境2.掌握ARM汇编指令程序的设计及调试二、实验设备1.PC操作系统WIN98或WIN2000或WINXP,ADSI.2集成开发环境,仿真驱动程序三、实验内容1.熟悉IAR Embedded Workbench 集成开发环境2.理解下列程序,新建工程,加入下面的程序,并观察实验结果,解释程序实现的功能分析:该程序实现的功能是程序功能:Y = A*B+C*D+E*F程序代码:AREA Examl, CODE,READONLY ;定义一个代码段ENTRY ;程序入口MOV R0,#0;设置R0寄存器的值为0MOV R8,#0;设置R8寄存器的值为0ADR R2,N;将R2寄存器的值设为数据域N的地址LDR R1,[R2];将以R2的值为地址的数据读入R1MOV R2,#0;设置R2的值为0ADR R3,C; 将R3寄存器的值设为数据域C的地址ADR R5,X; 将R5寄存器的值设为数据域X的地址LOOPLDR R4,[R3,R8];将R3+R8的数据读入R4LDR R6,[R5,R8];将R5+R8的数据读入R6MUL R9,R4,R6;R9 = R4*R6ADD R2,R2,R9;R2 = R2+R9ADD R8,R8,#4;R8 = R8+4ADD R0,R0,#1;R0 = R0+1CMP R0,R1;比较R0和R1的值BLT LOOP;R0<R1的话执行循环N DCD 0X03;C DCD 0X01,0X02,0X03,0X04,0X05,0X06;X DCD 0X01,0X02,0X03,0X04,0X05,0X06;END程序结果:各个寄存器的结果执行结果如下:3.实现1+2+3+4+····+100,求的值,并保存在地址0x90018的地址里面程序代码:MOV R0,#100;设置R0寄存器的值为100LDR R2,=0X90018;设置R2寄存器指向地址0x90018MOV R1,#0;设置R1的值为0MOV R3,#0;设置R3的值为0LOOPADD R3,R3,R0;R3 = R3+R0SUB R0,R0,#1;R0 = R0-1CMP R0,R1;将R0和R1的值比较BNE LOOP;不相等的话继续执行循环STR R3,[R2];将R3的值装入到R2指向的地址块中。
ARM嵌入式实验报告
选择工程模板为 ARM 可执行映象(ARM Executable Image)或 Thumb 可执行映象 (Thumb Executable Image),或 Thumb、ARM 交织映象(Thumb ARM Interworking Image), 然后在【Location】项选择项目存放途径,并在【Project name】项输入项目名称,点 击【确定】按钮即可建立相应工程。
void UART0_SendStr(uint8 const *str)
{ while(1)
{ if( *str == '\0' ) break;
UART0_SendByte(*str++);
// 发送数据
}
}
/**************************************************************************
; 功能 实现两个寄存器相加
; 说明 使用 ARMulate 软件仿真调试
AREA Example1,CODE,READONLY ; 声明代码段 Example1
ENTRY
; 标识程序入口
CODE32
; 声明 32 位 ARM 指令
START MOV R0,#0
; 设置参数
MOV R1,#10
LOOP BL ADD_SUB
; 调用子程序 ADD_SUB
B
LOOP
; 跳转到 LOOP
ADD_SUB ADDS R0,R0,R1 MOV PC,LR
; R0 = R0 + R1 ; 子程序返回
- 1、下载文档前请自行甄别文档内容的完整性,平台不提供额外的编辑、内容补充、找答案等附加服务。
- 2、"仅部分预览"的文档,不可在线预览部分如存在完整性等问题,可反馈申请退款(可完整预览的文档不适用该条件!)。
- 3、如文档侵犯您的权益,请联系客服反馈,我们会尽快为您处理(人工客服工作时间:9:00-18:30)。
1. 实验三:人机交互接口-键盘操作实验1.1 实验名称人机交互接口-键盘操作实验1.2 实验目的(1)了解键盘工作原理和使用方法(2)深入学习、理解、掌握中断使用方法1.3 实验过程与分析(遇到的问题及如何解决)1)Keil开发环境中对项目Project配置时Startup.s修改时有遗漏导致运行出错。
查阅实验指导书和在同学的帮助下解决2)按偶数键时字符闪过而停,而不是静止。
反复调试,检查代码,最后发现,case语句缺少break3)做附加问题时,不能同时显示两个字符。
问题出在我预习做的不到位,不太了解case从而想通过修改case语句来解决这个问题,几次尝试无果之后,我翻看了一遍代码,发现我可以在Draw_Char_H函数中添加if判定语句从而达到想要的显示效果。
实验问题:(在实验报告中回答)(1)键盘的工作原理是什么?(自己查资料)矩阵键盘。
按行和列定义的。
获取到某个特定的矩阵值的按键中断后处理这个中断全编码键盘是由硬件完成键盘识别功能的,它通过识别键是否按下以及所按下键的位置,由全编码电路产生一个唯一对应的编码信息(如ASCII码)。
非编码键盘是由软件完成键盘识别功能的,它利用简单的硬件和一套专用键盘编码程序来识别按键的位置,然后由CPU 将位置码通过查表程序转换成相应的编码信息。
非编码键盘的速度较低,但结构简单的,并且通过软件能为某些键的重定义提供很大的方便。
(2)键盘等其他外部设备与CPU之间如何协调工作?(自己查资料)CPU通过I/O接口和外部设备进行数据交换,通常的接口都有协调CPU与外部设备工作的功能。
其中,CPU通过接口对外设进行控制的方式有以下几种:程序查询方式、中断处理方式、DMA(直接存储器存取)传送方式。
(3)在实验报告中对键盘中断服务程序进行逐行注释,理解计算机是如何接收键盘输入的。
void GPIO_PORT_D_ISR(void){//定义一个unsigned char类型的变量ucKeyunsigned char ucKey;//定义一个unsigned long类型的变量ulStatusunsigned long ulStatus;//为GPIO_PORTD_BASE这个端口隐蔽中断获得一个状态ulStatus = GPIOPinIntStatus(GPIO_PORTD_BASE, true);//把获得的状态下的中断清空GPIOPinIntClear(GPIO_PORTD_BASE, ulStatus);//如果这个状态和GPIO_PIN_7作与运算不为0if(ulStatus & GPIO_PIN_7){//把GOIO_PIN_4代表的值读到ucKey里ucKey = GPIOPinRead(GPIO_PORTC_BASE, GPIO_PIN_4);//ucKey右移以为ucKey = ucKey>>1;//ucValue的值自加ucKeyucValue = ucValue + ucKey;//ucValue左移一位ucValue = ucValue<<1;//i加1i++;//如果等于4if(i==4){//把0的值赋给ii=0;//把'\0'赋给oledkey[1]oledkey[1]='\0';//如果ucV alue右移四位后小于10if((ucValue>>4)<10)//把ucV alue右移4位加上48的值赋给oledkey[0]oledkey[0] = (ucValue>>4) + 48;//或者else//把ucV alue右移4位减10加上'A'的值赋给oledkey[0]oledkey[0] = (ucValue>>4) - 10 + 'A';//把1的值赋给Event_keyEvent_key = 1;}}}(4)根据实验思考,如果有两个不同的中断需要响应时,应该如何设计程序?写出两个中断处理程序,并在中断向量表里添加这两个程序的映射。
(5)按下几个键后屏幕中出现多个字符怎么办?如何只显示一个?每次按键时清除前一个字符。
(6)(6)实验问题6见(4)--(2)部分。
实验问题6:这样设计的目的和作用是什么?要是系统需要相应10个不同的中断又如何设计?目的是使两个中断程序能够互不影响地工作。
如果需要响应10个不同的中断,可以设置10个变量同时监测。
1.4实验结果总结实验结果(附照片)总结(自己的收获)1.5心得体会#include <stdio.h>#include <LM3Sxxxx.H>#include <hw_ints.h>#include <hw_memmap.h>#include <hw_types.h> #include <gpio.h>#include <interrupt.h>#include <sysctl.h>#include "rit128x96x4.h"unsigned char buf1[] ={0x00,0x00,0xff,0xff,0xff,0xff,0xff,0xff,0x00,0x00,};unsigned char buf2[] ={0xff,0xff,0x00,0x00,0x00,0x00,0x00,0x00,0xff,0xff};unsigned char buf3[] ={0xff,0xff,0x00,0x00,0x00,0x00,0x00,0x00,0xff,0xff};unsigned char buf4[] ={0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,};unsigned char buf5[] ={0xff,0xff,0x00,0x00,0x00,0x00,0x00,0x00,0xff,0xff};unsigned char buf6[] ={0xff,0xff,0x00,0x00,0x00,0x00,0x00,0x00,0xff,0xff};unsigned char buf7[] ={0xff,0xff,0x00,0x00,0x00,0x00,0x00,0x00,0xff,0xff};unsigned char buf9[] ={0x00,0x00,0x00,0x00,0xff,0xff,0x00,0x00,0x00,0x00};unsigned char xin1[] = {0x00,0x00,0xff,0xff,0x00,0x00,0xff,0xff,0x00,0x00};unsigned char xin2[] = {0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff};unsigned char xin3[] ={0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff};unsigned char xin4[] ={0x00,0x00,0xff,0xff,0xff,0xff,0xff,0xff,0x00,0x00};unsigned char xin5[] ={0x00,0x00,0x00,0x00,0xff,0xff,0x00,0x00,0x00,0x00};int count=-1;int y=0;int Event_key=0;int Event=0;char oledkey[2];int i=0;unsigned char ucValue=0x00;void GPIO_PORT_D_ISR(void){unsigned char ucKey;unsigned long ulStatus;ulStatus = GPIOPinIntStatus(GPIO_PORTD_BASE, true);GPIOPinIntClear(GPIO_PORTD_BASE, ulStatus);if(ulStatus & GPIO_PIN_7){ucKey = GPIOPinRead(GPIO_PORTC_BASE, GPIO_PIN_4);ucKey = ucKey>>1;ucValue = ucValue + ucKey;ucValue = ucValue<<1;i++;if(i==4){i=0;oledkey[1]='\0';Event_key=1;Event = 0;if((ucValue>>4)<10)oledkey[0] = (ucValue>>4) + 48;elseoledkey[0] = (ucValue>>4) - 10 + 'A';}}}/* SysTick interrupt happens every XX ms */void SysTick_Handler (void){Event = 1;}void Reset_Counter_Speed(int p){int s=p*100;SysTickIntDisable();SysTickDisable();SysTickPeriodSet(SysCtlClockGet()/s);SysTickEnable();SysTickIntEnable();}void Draw_Char_H(int x){SysTickIntDisable();SysTickDisable();RIT128x96x4Clear();RIT128x96x4StringDraw(oledkey, 65, 85, 15);Event = 0;RIT128x96x4StringDraw("Now Show Char!", 50, 75, 15);RIT128x96x4ImageDraw(buf1, x, 5, 20, 1);RIT128x96x4ImageDraw(buf2, x, 7, 20, 1);RIT128x96x4ImageDraw(buf3, x, 9, 20, 1);RIT128x96x4ImageDraw(buf4, x, 11, 20, 1);RIT128x96x4ImageDraw(buf5, x, 13, 20, 1);RIT128x96x4ImageDraw(buf6, x, 15, 20, 1);RIT128x96x4ImageDraw(buf7, x, 17, 20, 1);if(x==20){RIT128x96x4StringDraw("Now Show Char!", 50, 75, 15); RIT128x96x4ImageDraw(xin1, 0, 55, 20, 1);RIT128x96x4ImageDraw(xin2, 0, 57, 20, 1);RIT128x96x4ImageDraw(xin3, 0, 59, 20, 1);RIT128x96x4ImageDraw(xin4, 0, 61, 20, 1);RIT128x96x4ImageDraw(xin5, 0, 63, 20, 1);}/*RIT128x96x4ImageDraw(buf1, x+30, 65, 15, 1);RIT128x96x4ImageDraw(buf2, x+30, 68, 15, 1);RIT128x96x4ImageDraw(buf3, x+30, 71, 15, 1);RIT128x96x4ImageDraw(buf4, x+30, 74, 15, 1);RIT128x96x4ImageDraw(buf5, x+30, 77, 15, 1);RIT128x96x4ImageDraw(buf6, x+30, 80, 15, 1);RIT128x96x4ImageDraw(buf7, x+30, 83, 15, 1);RIT128x96x4ImageDraw(buf9, x+40, 65, 15, 1);RIT128x96x4ImageDraw(buf9, x+40, 68, 15, 1);RIT128x96x4ImageDraw(buf9, x+40, 71, 15, 1);RIT128x96x4ImageDraw(buf9, x+40, 74, 15, 1);RIT128x96x4ImageDraw(buf9, x+40, 77, 15, 1);RIT128x96x4ImageDraw(buf9, x+40, 80, 15, 1);RIT128x96x4ImageDraw(buf9, x+40, 83, 15, 1);RIT128x96x4ImageDraw(buf1, x+60, 75, 10, 1);RIT128x96x4ImageDraw(buf2, x+60, 76, 10, 1);RIT128x96x4ImageDraw(buf3, x+60, 77, 10, 1);RIT128x96x4ImageDraw(buf4, x+60, 78, 10, 1);RIT128x96x4ImageDraw(buf5, x+60, 79, 10, 1);RIT128x96x4ImageDraw(buf6, x+60, 80, 10, 1);RIT128x96x4ImageDraw(buf7, x+60, 81, 10, 1);RIT128x96x4ImageDraw(buf9, x+70, 75, 10, 1);RIT128x96x4ImageDraw(buf9, x+70, 76, 10, 1);RIT128x96x4ImageDraw(buf9, x+70, 77, 10, 1);RIT128x96x4ImageDraw(buf9, x+70, 78, 10, 1);RIT128x96x4ImageDraw(buf9, x+70, 79, 10, 1);RIT128x96x4ImageDraw(buf9, x+70, 80, 10, 1);RIT128x96x4ImageDraw(buf9, x+70, 81, 10, 1);*/};int main(){SysCtlPeripheralEnable(SYSCTL_PERIPH_GPIOC);SysCtlPeripheralEnable(SYSCTL_PERIPH_GPIOD);GPIOPinTypeGPIOInput(GPIO_PORTD_BASE, GPIO_PIN_7);GPIOPinTypeGPIOInput(GPIO_PORTC_BASE, GPIO_PIN_4);IntEnable(INT_GPIOD);IntMasterEnable();GPIOPinIntEnable(GPIO_PORTD_BASE, GPIO_PIN_7);GPIOIntTypeSet(GPIO_PORTD_BASE, GPIO_PIN_7, GPIO_RISING_EDGE);SysCtlClockSet(SYSCTL_SYSDIV_4 | SYSCTL_USE_PLL | SYSCTL_OSC_MAIN | SYSCTL_XTAL_8MHZ);RIT128x96x4Init(1000000);RIT128x96x4Clear();while (1){RIT128x96x4StringDraw("", 50, 55, 15);RIT128x96x4StringDraw("", 50, 65, 15);if(Event_key){RIT128x96x4Clear();Event_key=0;Event=0;switch(oledkey[0]){case '0':Draw_Char_H(0);Event=0;/*Flag = 0;*/break;case '1':Reset_Counter_Speed(1);break;case '2':Draw_Char_H(20);break;case '3':Reset_Counter_Speed(1.5);break;case '4':Draw_Char_H(40);break;case '5':Reset_Counter_Speed(2);break;case '6':Draw_Char_H(50);break;case '7':Reset_Counter_Speed(2.5);//Draw_Char_xin();break;case '8':Draw_Char_H(60);break;case '9':Reset_Counter_Speed(3);break;case 'A':Draw_Char_H(70);break;case 'B':Reset_Counter_Speed(3.5);break;case 'C':Draw_Char_H(80);break;case 'D':Reset_Counter_Speed(4);break;case 'E':Draw_Char_H(100);break;case 'F':Reset_Counter_Speed(4.5);break;default:break;}}if(Event){RIT128x96x4Clear();RIT128x96x4StringDraw("Now Reset Speed!", 50, 75, 15);RIT128x96x4StringDraw(oledkey, 65, 85, 15);Event = 0;// if(count>199) count = 0;// else count ++;// if(count==0)// y=0;// y=count;// RIT128x96x4ImageDraw(buf1, (int)(y*0.50), 5, 20, 1);// RIT128x96x4ImageDraw(buf2, (int)(y*0.50), 7, 20, 1);// RIT128x96x4ImageDraw(buf3, (int)(y*0.50), 9, 20, 1);// RIT128x96x4ImageDraw(buf4, (int)(y*0.50), 11, 20, 1);// RIT128x96x4ImageDraw(buf5, (int)(y*0.50), 13, 20, 1); // RIT128x96x4ImageDraw(buf6, (int)(y*0.50), 15, 20, 1); // RIT128x96x4ImageDraw(buf7, (int)(y*0.50), 17, 15, 1);if(count>199) count = 0;else count ++;if(count==0)y=0;y=y+(count/5);RIT128x96x4ImageDraw(buf1, y, 5, 20, 1);RIT128x96x4ImageDraw(buf2, y, 7,20, 1);RIT128x96x4ImageDraw(buf3, y, 9, 20, 1);RIT128x96x4ImageDraw(buf4, y, 11,20, 1);RIT128x96x4ImageDraw(buf5, y, 13,20, 1);RIT128x96x4ImageDraw(buf6, y, 15, 20, 1);RIT128x96x4ImageDraw(buf7, y, 17,20, 1);}}return 0;}。