当前位置:文档之家› 嵌入式系统实验指导书实验二-实验六

嵌入式系统实验指导书实验二-实验六

嵌入式系统实验指导书实验二-实验六
嵌入式系统实验指导书实验二-实验六

嵌入式系统

龙岩学院

物理与机电工程学院电子工程系

2013.9

实验二UCOS-II任务管理

【实验目的】

1、掌握UCOS-II中任务管理的函数的应用。

2、掌握UCOS-II在STM32平台下对硬件的控制。

3、掌握开发UCOS-II应用的程序结构。

【实验步骤】

一、UCOSII工作原理

UCOSII提供系统时钟节拍,实现任务切换和任务延时等功能。这个时钟节拍由OS_TICKS_PER_SEC(在os_cfg.h中定义)设置,一般我们设置UCOSII的系统时钟节拍为1ms~100ms,具体根据你所用处理器和使用需要来设置。本次实验利用STM32的SYSTICK定时器来提供UCOSII时钟节拍。

UCOSII早期版本只支持64个任务,但是从2.80版本开始,支持任务数提高到255个。UCOSII保留了最高4个优先级和最低4个优先级的总共8个任务,用于拓展使用,实际上,UCOSII一般只占用了最低2个优先级,分别用于空闲任务(倒数第一)和统计任务(倒数第二),所以剩下给我们使用的任务最多可达255-2=253个(V2.91)。

UCOSII的任何任务都是通过一个叫任务控制块(TCB)的东西来控制的,每个任务管理块有3个最重要的参数:1,任务函数指针;2,任务堆栈指针;3,任务优先级;任务控制块就是任务在系统里面的身份证(UCOSII通过优先级识别任务),任务控制块我们就不再详细介绍了,详细介绍请参考任哲老师的《嵌入式实时操作系统UCOSII原理及应用》一书第二章。

在UCOSII中,使用CPU的时候,优先级高(数值小)的任务比优先级低的任务具有优先使用权,即任务就绪表中总是优先级最高的任务获得CPU使用权,只有高优先级的任务让出CPU使用权(比如延时)时,低优先级的任务才能获得CPU使用权。UCOSII不支持多个任务优先级相同,也就是每个任务的优先级必须不一样。任务的调度其实就是CPU运行环境的切换,即:PC指针、SP 指针和寄存器组等内容的存取过程

UCOSII的每个任务都是一个死循环。每个任务都处在以下5种状态之一的状态下,这5种状态是:睡眠状态、就绪状态、运行状态、等待状态(等待某一事

件发生)和中断服务状态。

睡眠状态,任务在没有被配备任务控制块或被剥夺了任务控制块时的状态。

就绪状态,系统为任务配备了任务控制块且在任务就绪表中进行了就绪登记,任务已经准备好了,但由于该任务的优先级比正在运行的任务的优先级低,还暂时不能运行,这时任务的状态叫做就绪状态。

运行状态,该任务获得CPU使用权,并正在运行中,此时的任务状态叫做运行状态等待状态,正在运行的任务,需要等待一段时间或需要等待一个事件发生再运行时,该任务就会把CPU的使用权让给别的任务而使任务进入等待状态。

中断服务状态,一个正在运行的任务一旦响应中断申请就会中止运行而去执行中断服务程序,这时任务的状态叫做中断服务状态。

UCOSII任务的5个状态转换关系如图2.1所示

图2.1 任务的状态转换图

接下来,我们看看在UCOSII中,与任务相关的几个函数:

1)建立任务函数

如果想让UCOSII管理用户的任务,必须先建立任务。UCOSII提供了我们2个建立任务的函数:OSTaskCreat和OSTaskCreatExt,我们一般用OSTaskCreat函数来创建任务,该函数原型为:

OSTaskCreate(void(*task)(void*pd),void*pdata,OS_STK*ptos,INTU prio)

该函数包括4个参数:task:是指向任务代码的指针;

pdata:是任务开始执行时,传递给任务的参数的指针;

ptos:是分配给任务的堆栈的栈顶指针;

prio是分配给任务的优先级。

每个任务都有自己的堆栈,堆栈必须申明为OS_STK类型,并且由连续的内存空间组成。可以静态分配堆栈空间,也可以动态分配堆栈空间。OSTaskCreatExt也可以用来创建任务,详细介绍请参考《嵌入式实时操作系统UCOSII原理及应用》3.5.2节。

2)任务删除函数

所谓的任务删除,其实就是把任务置于睡眠状态,并不是把任务代码给删除了。UCOSII 提供的任务删除函数原型为:

INT8U OSTaskDel(INT8U prio)

其中参数prio就是我们要删除的任务的优先级。

可见该函数是通过任务优先级来实现任务删除的,特别注意:任务不能随便删除,必须在确保被删除任务的资源被释放的前提下才能删除!

3)请求任务删除函数

前面提到,必须确保被删除任务的资源被释放的前提下才能将其删除,所以我们通过向被删除任务发送删除请求,来实现任务释放自身占用资源后再删除。UCOSII提供的请求删除任务函数原型为:

INT8U OSTaskDelReq(INT8U prio)

同样还是通过优先级来确定被请求删除任务。

4)改变任务的优先级函数

UCOSII在建立任务时,会分配给任务一个优先级,但是这个优先级并不是一成不变的,而是可以通过调用UCOSII提供的函数修改。UCOSII提供的任务优先级修改函数原型为:INT8U OSTaskChangePrio(INT8U oldprio,INT8U newprio)。

5)任务挂起函数

任务挂起和任务删除有点类似,但是又有区别,任务挂起只是将被挂起任务的就绪标志删除,并做任务挂起记录,并没有将任务控制块任务控制块链表里面删除,也不需要释放其资源,而任务删除则必须先释放被删除任务的资源,并将被删除任务的任务控制块也给删了。被挂起的任务,在恢复(解挂)后可以继续运行。UCOSII提供的任务挂起函数原型为:INT8U OSTaskSuspend(INT8U prio)

6)任务恢复函数

有任务挂起函数,就有任务恢复函数,通过该函数将被挂起的任务恢复,让调度器能够重新调度该函数。UCOSII提供的任务恢复函数原型为:INT8U OSTaskResume(INT8U prio)

【实验内容】

本节实验功能简介:本章我们在UCOSII里面创建3个任务:开始任务、LED0任务和LED1任务,开始任务用于创建其他(LED0和LED1)任务,之后挂起;LED0任务用于控制DS0 的亮灭,DS0每秒钟亮80ms;LED1任务用于控制DS1的亮灭,DS1亮300ms,灭300ms,依次循环。所要用到的硬件资源如下:

1)指示灯DS0 、DS1 的硬件电路图如图2.2

图2.2 LED电路图

其中PWR是系统电源指示灯,为蓝色。LED0和LED1分别接在PB5和PE5上。为了方便大家判断,我们选择了DS0为红色的LED,DS1为绿色的LED。

2)软件参数设置

在os_cfg.h里面定义

OS_TICKS_PER_SEC=200,也就是设置UCOSII的时钟节拍为5ms。

OS_MAX_TASKS = 10,也就是最多10个任务(包括空闲任务和统计任务在内),其他配置我们就不详细介绍了,请参考本实验源码。

前面提到,我们需要在sys.h里面设置SYSTEM_SUPPORT_UCOS为1,以支持UCOSII,通过这个设置,我们不仅可以实现利用delay_init来初始化SYSTICK,产生UCOSII的系统时钟节拍,还可以让delay_us和delay_ms函数在UCOSII下能够正常使用,这使得我们之前的代码可以十分方便的移植到UCOSII下。虽然UCOSII也提供了延时函数:OSTimeDly 和OSTimeDLyHMSM,但是这两个函数的最少延时单位只能是1个UCOSII时钟节拍,在本次实验中,即5ms,显然不能实现us级的延时,而us级的延时在很多时候非常有用:比

如IIC模拟时序,DS18B20等单总线器件操作等。而通过我们提供的delay_us和delay_ms,则可以方便的提供us和ms的延时服务,这比UCOSII本身提供的延时函数更好用。在设置SYSTEM_SUPPORT_UCOS为1之后,UCOSII的时钟节拍由SYSTICK的中断服务函数提供,该部分代码如下:

//systick中断服务函数,使用ucos时用到

void SysTick_Handler(void)

{

OSIntEnter();//进入中断

OSTimeTick(); //调用ucos的时钟服务程序

OSIntExit(); //触发任务切换软中断

}

以上代码,其中OSIntEnter是进入中断服务函数,用来记录中断嵌套层数(OSIntNesting 增加1);OSTimeTick是系统时钟节拍服务函数,在每个时钟节拍了解每个任务的延时状态,使已经到达延时时限的非挂起任务进入就绪状态;OSIntExit是退出中断服务函数,该函数可能触发一次任务切换(当OSIntNesting==0&&调度器未上锁&&就绪表最高优先级任务!=被中断的任务优先级时),否则继续返回原来的任务执行代码(如果OSIntNesting不为0,则减1)。

事实上,任何中断服务函数,我们都应该加上OSIntEnter和OSIntExit函数,这是因为UCOSII是一个可剥夺型的内核,中断服务子程序运行之后,系统会根据情况进行一次任务调度去运行优先级别最高的就绪任务,而并不一定接着运行被中断的任务!

最后,我们打开test.c,输入如下代码:

#include"sys.h"

#include"usart.h"

#include"delay.h"

#include"led.h"

#include"includes.h"

//ALIENTEK战舰STM32开发板实验53

//UCOSII实验1-任务调度

//技术支持:https://www.doczj.com/doc/d217198547.html,

//广州市星翼电子科技有限公司

/////////////////////////UCOSII任务设置///////////////////////////////////

//START 任务

//设置任务优先级

#define START_TASK_PRIO 10 //开始任务的优先级设置为最低

//设置任务堆栈大小

#define START_STK_SIZE 64

//任务堆栈

OS_STK START_TASK_STK[START_STK_SIZE];

//任务函数

void start_task(void *pdata);

//LED0任务

//设置任务优先级

#define LED0_TASK_PRIO 7

//设置任务堆栈大小

#define LED0_STK_SIZE 64

//任务堆栈

OS_STK LED0_TASK_STK[LED0_STK_SIZE];

//任务函数

void led0_task(void *pdata);

//LED1任务

//设置任务优先级

#define LED1_TASK_PRIO 6

//设置任务堆栈大小

#define LED1_STK_SIZE 64

//任务堆栈

OS_STK LED1_TASK_STK[LED1_STK_SIZE];

//任务函数

void led1_task(void *pdata);

int main(void)

{

Stm32_Clock_Init(9); //系统时钟设置

delay_init(72); //延时初始化

LED_Init();

LED_Init(); //初始化与LED连接的硬件接口

OSInit();

OSTaskCreate(start_task,

(void *)0,

(OS_STK *)&START_TASK_STK[START_STK_SIZE-1],

START_TASK_PRIO );//创建起始任务

OSStart();

}

//开始任务

void start_task(void *pdata)

{

OS_CPU_SR cpu_sr=0;

pdata = pdata;

OS_ENTER_CRITICAL(); //进入临界区(无法被中断打断)

OSTaskCreate(led0_task,

(void *)0,

(OS_STK*)&LED0_TASK_STK[LED0_STK_SIZE-1],

LED0_TASK_PRIO);

OSTaskCreate(led1_task,

(void *)0,

(OS_STK*)&LED1_TASK_STK[LED1_STK_SIZE-1],

LED1_TASK_PRIO);

OSTaskSuspend(START_TASK_PRIO); //挂起起始任务.

OS_EXIT_CRITICAL(); //退出临界区(可以被中断打断)

}

//LED0任务

void led0_task(void *pdata)

{

while(1)

{

LED0=0;

delay_ms(80);

LED0=1;

delay_ms(920);

};

}

//LED1任务

void led1_task(void *pdata)

{

while(1)

{

LED1=0;

delay_ms(300);

LED1=1;

delay_ms(300);

};

}

该部分代码我们创建了3个任务:start_task、led0_task和led1_task,优先级分别是10、7和6,堆栈大小都是64(注意OS_STK为32位数据)。我们在main函数只创建了start_task 一个任务,然后在start_task再创建另外两个任务,在创建之后将自身(start_task)挂起。这里,我们单独创建start_task,是为了提供一个单一任务,实现应用程序开始运行之前的准备

工作(比如:外设初始化、创建信号量、创建邮箱、创建消息队列、创建信号量集、创建任务、初始化统计任务等等)。

在应用程序中经常有一些代码段必须不受任何干扰地连续运行,这样的代码段叫做临界段(或临界区)。因此,为了使临界段在运行时不受中断所打断,在临界段代码前必须用关中断指令使CPU屏蔽中断请求,而在临界段代码后必须用开中断指令解除屏蔽使得CPU可以响应中断请求。UCOSII提供OS_ENTER_CRITICAL和OS_EXIT_CRITICAL两个宏来实现,这两个宏需要我们在移植UCOSII的时候实现,本章我们采用方法3(即OS_CRITICAL_METHOD为3)来实现这两个宏。因为临界段代码不能被中断打断,将严重影响系统的实时性,所以临界段代码越短越好!

在start_task任务中,我们在创建led0_task和led1_task的时候,不希望中断打断,故使用了临界区。其他两个任务,就十分简单了,我们就不细说了,注意我们这里使用的延时函数还是delay_ms,而不是直接使用的OSTimeDly。

另外,一个任务里面一般是必须有延时函数的,以释放CPU使用权,否则可能导致低优先级的任务因高优先级的任务不释放CPU使用权而一直无法得到CPU使用权,从而无法运行。

【实验结果】

下载验证

在代码编译成功之后,我们通过下载代码到战舰STM32开发板上,可以看到DS0一秒钟闪一次,而DS1则以固定的频率闪烁,说明两个任务(led0_task和led1_task)都已经正常运行了,符合我们预期的设计。

实验三UCOS-II信号量和邮箱管理

【实验目的】

1、掌握UCOS-II中信号量的原理和函数的应用。

2、掌握UCOS-II在邮箱管理的原理和含义。

3、掌握开发UCOS-II的信号量和邮箱的应用的程序结构。

【实验步骤】

一、UCOSII信号量和邮箱简介

系统中的多个任务在运行时,经常需要互相无冲突地访问同一个共享资源,或者需要互相支持和依赖,甚至有时还要互相加以必要的限制和制约,才保证任务的顺利运行。因此,操作系统必须具有对任务的运行进行协调的能力,从而使任务之间可以无冲突、流畅地同步运行,而不致导致灾难性的后果。在UCOSII 中,是使用信号量、邮箱(消息邮箱)和消息队列这些被称作事件的中间环节来实现任务之间的通信的。

两个任务通过事件进行通讯的示意图如图3.1所示:

图3.1 事件通讯的示意图

在图3.1中任务1 是发信方,任务2 是收信方。任务1 负责把信息发送到时间上,这项操作叫做发送事件。任务2 通过读取事件操作对事件进行查询:如果有信息则读取,否则等待。读事件操作叫做请求事件。为把描述事件的数据结构统一起来,UCOSII 使用叫做事件控制块(ECB)的数据结构来描述诸如信号量、邮箱和消息队列这些事件。事件控制块中包含包括等待任务表在内的所有有关事件的数据,事件控制块结构体定义如下:

typedef struct

{

INT8U OSEventType; //事件的类型

INT16U OSEventCnt; //信号量计数器

void *OSEventPtr; //消息或消息队列的指针

INT8U OSEventGrp; //等待事件的任务组

INT8U OSEventTbl[OS_EVENT_TBL_SIZE];//任务等待表

#if OS_EVENT_NAME_EN > 0u

INT8U *OSEventName; //事件名

#endif

} OS_EVENT;

1、信号量

信号量是一类事件。使用信号量的最初目的,是为了给共享资源设立一个标志,该标志表示该共享资源的占用情况。这样,当一个任务在访问共享资源之前,就可以先对这个标志进行查询,从而在了解资源被占用的情况之后,再来决定自己的行为。信号量可以分为两种:一种是二值型信号量,另外一种是N 值信号量。

UCOSII将二值型信号量称之为也叫互斥型信号量,将N值信号量称之为计数型信号量,也就是普通的信号量。本次实验中主要学习互斥型信号量。

接下来我们看看在UCOSII中,与信号量相关的几个函数(未全部列出,下同)。

1)创建信号量函数

在使用信号量之前,我们必须用函数OSSemCreate来创建一个信号量,该函数的原型为:OS_EVENT *OSSemCreate (INT16U cnt)

其中参数cnt则是信号量计数器(OSEventCnt)的初始值,

函数返回值为已创建的信号量的指针。

2)请求信号量函数

任务通过调用函数OSSemPend请求信号量,该函数原型如下:

void OSSemPend ( OS_EVENT *pevent, INT16U timeout, INT8U *err)

其中,参数pevent是被请求信号量的指针,

timeout为等待时限,err为错误信息。

为防止任务因得不到信号量而处于长期的等待状态,函数OSSemPend允许用参数timeout 设置一个等待时间的限制,当任务等待的时间超过timeout时可以结束等待状态而进入就绪状态。如果参数timeout被设置为0,则表明任务的等待时间为无限长。

2)发送信号量函数

任务获得信号量,并在访问共享资源结束以后,必须要释放信号量,释放信号量也叫做发送信号量,发送信号通过OSSemPost函数实现。OSSemPost 函数在对信号量的计数器操作之前,首先要检查是否还有等待该信号量的任务。如果没有,就把信号量计数器OSEventCnt加一;如果有,则调用调度器OS_Sched( )去运行等待任务中优先级别最高的任务。函数OSSemPost的原型为:

INT8U OSSemPost(OS_EVENT *pevent)

其中,pevent为信号量指针,该函数在调用成功后,返回值为OS_ON_ERR,否则会根据具体错误返回OS_ERR_EVENT_TYPE、OS_SEM_OVF。

4)删除信号量函数

应用程序如果不需要某个信号量了,那么可以调用函数OSSemDel来删除该信号量,该函数的原型为:

OS_EVENT *OSSemDel (OS_EVENT *pevent,INT8U opt, INT8U *err)

其中,pevent为要删除的信号量指针,opt为删除条件选项,err为错误信息。

2、邮箱

在多任务操作系统中,常常需要在任务与任务之间通过传递一个数据(这种数据叫做“消息”)的方式来进行通信。为了达到这个目的,可以在内存中创建一个存储空间作为该数据的缓冲区。如果把这个缓冲区称之为消息缓冲区,这样在任务间传递数据(消息)的最简单办法就是传递消息缓冲区的指针。我们把用来传递消息缓冲区指针的数据结构叫做邮箱(消息邮箱)。

在UCOSII中,我们通过事件控制块的OSEventPrt来传递消息缓冲区指针,同时使事件控制块的成员OSEventType为常数OS_EVENT_TYPE_MBOX,则该事件控制块就叫做消息邮箱。

接下来我们看看在UCOSII中,与消息邮箱相关的几个函数。

1)创建邮箱函数

创建邮箱通过函数OSMboxCreate实现,该函数原型为:

OS_EVENT *OSMboxCreate (void *msg)

函数中的参数msg为消息的指针,函数的返回值为消息邮箱的指针。

调用函数OSMboxCreate需先定义msg的初始值。在一般的情况下,这个初始值为NULL;但也可以事先定义一个邮箱,然后把这个邮箱的指针作为参数传递到函数OSMboxCreate 中,使之一开始就指向一个邮箱。

3)任务可以通过调用函数OSMboxPost 向消息邮箱发送消息,这个函数的原型为:INT8U OSMboxPost (OS_EVENT *pevent,void *msg)

其中pevent为消息邮箱的指针,msg为消息指针。

3)请求邮箱函数

当一个任务请求邮箱时需要调用函数OSMboxPend,这个函数的主要作用就是查看邮箱指针OSEventPtr是否为NULL,如果不是NULL就把邮箱中的消息指针返回给调用函数的任务,同时用OS_NO_ERR通过函数的参数err通知任务获取消息成功;如果邮箱指针OSEventPtr是NULL,则使任务进入等待状态,并引发一次任务调度。

函数OSMboxPend的原型为:

void *OSMboxPend (OS_EVENT *pevent, INT16U timeout, INT8U *err)

其中pevent为请求邮箱指针,timeout为等待时限,err为错误信息。

4)查询邮箱状态函数

任务可以通过调用函数OSMboxQuery查询邮箱的当前状态。该函数原型为:

INT8U OSMboxQuery(OS_EVENT *pevent,OS_MBOX_DATA *pdata)

其中pevent为消息邮箱指针,pdata为存放邮箱信息的结构。向邮箱发送消息函数

5)删除邮箱函数

在邮箱不再使用的时候,我们可以通过调用函数OSMboxDel来删除一个邮箱,该函数原型为:

OS_EVENT *OSMboxDel(OS_EVENT *pevent,INT8U opt,INT8U *err)

其中pevent为消息邮箱指针,opt为删除选项,err为错误信息。

【实验内容】

本节实验功能简介:本次实验在UCOSII里面创建6个任务:开始任务、LED任务、触摸屏任务、蜂鸣器任务、按键扫描任务和主任务,开始任务用于创建信号量、创建邮箱、初始化统计任务以及其他任务的创建,之后挂起;LED任务用于DS0控制,提示程序运行状况;蜂鸣器任务用于测试信号量,是请求信号量函数,每得到一个信号量,蜂鸣器就叫一次;触摸屏任务用于在屏幕上画图,可以用于测试CPU使用率;按键扫描任务用于按键扫描,优先级最高,将得到的键值通过消息邮箱发送出去;主任务则通过查询消息邮箱获得键值,并根据键值执行DS1控制、信号量发送(蜂鸣器控制)、触摸区域清屏和触摸屏校准等控制。

1、所要用到的硬件资源如下:

1)指示灯DS0 、DS1

2)4个按键(KEY0/KEY1/KEY2/WK_UP)

3)蜂鸣器

4)TFTLCD模块

2、软件参数设置

OS_TICKS_PER_SEC=500,即UCOSII的时钟节拍为2ms。

在加入UCOSII代码后,我们只需要修改test.c函数了,打开test.c,输入如下代码:

#include"sys.h"

#include"usart.h"

#include"delay.h"

#include"led.h"

#include"beep.h"

#include"key.h"

#include"exti.h"

#include"wdg.h"

#include"timer.h"

#include"tpad.h"

#include"oled.h"

#include"lcd.h"

#include"usmart.h"

#include"rtc.h"

#include"wkup.h"

#include"adc.h"

#include"dac.h"

#include"dma.h"

#include"24cxx.h"

#include"flash.h"

#include"rs485.h"

#include"can.h"

#include"touch.h"

#include"includes.h"

//ALIENTEK战舰STM32开发板实验54

//UCOSII实验2-信号量和邮箱

//技术支持:https://www.doczj.com/doc/d217198547.html,

//广州市星翼电子科技有限公司

/////////////////////////UCOSII任务设置/////////////////////////////////// //START 任务

//设置任务优先级

#define START_TASK_PRIO 10 //开始任务的优先级设置为最低

//设置任务堆栈大小

#define START_STK_SIZE 64

//任务堆栈

OS_STK START_TASK_STK[START_STK_SIZE];

//任务函数

void start_task(void *pdata);

//LED任务

//设置任务优先级

#define LED_TASK_PRIO 7

//设置任务堆栈大小

#define LED_STK_SIZE 64

//任务堆栈

OS_STK LED_TASK_STK[LED_STK_SIZE];

//任务函数

void led_task(void *pdata);

//触摸屏任务

//设置任务优先级

#define TOUCH_TASK_PRIO 6

//设置任务堆栈大小

#define TOUCH_STK_SIZE 64

//任务堆栈

OS_STK TOUCH_TASK_STK[TOUCH_STK_SIZE];

//任务函数

void touch_task(void *pdata);

//蜂鸣器任务

//设置任务优先级

#define BEEP_TASK_PRIO 5

//设置任务堆栈大小

#define BEEP_STK_SIZE 64 //任务堆栈

OS_STK BEEP_TASK_STK[BEEP_STK_SIZE];

//任务函数

void beep_task(void *pdata);

//主任务

//设置任务优先级

#define MAIN_TASK_PRIO 4

//设置任务堆栈大小

#define MAIN_STK_SIZE 128 //任务堆栈

OS_STK MAIN_TASK_STK[MAIN_STK_SIZE];

//任务函数

void main_task(void *pdata);

//按键扫描任务

//设置任务优先级

#define KEY_TASK_PRIO 3

//设置任务堆栈大小

#define KEY_STK_SIZE 64

//任务堆栈

OS_STK KEY_TASK_STK[KEY_STK_SIZE];

//任务函数

void key_task(void *pdata);

////////////////////////////////////////////////////////////////////////////// OS_EVENT * msg_key; //按键邮箱事件块指针

OS_EVENT * sem_beep; //蜂鸣器信号量指针

//加载主界面

void ucos_load_main_ui(void)

{

LCD_Clear(WHITE); //清屏

POINT_COLOR=RED; //设置字体为红色

LCD_ShowString(30,10,200,16,16,"WarShip STM32");

LCD_ShowString(30,30,200,16,16,"UCOSII TEST2");

LCD_ShowString(30,50,200,16,16,"ATOM@ALIENTEK");

LCD_ShowString(30,75,200,16,16,"KEY0:DS0 KEY_UP:ADJUST");

LCD_ShowString(30,95,200,16,16,"KEY1:BEEP KEY2:CLEAR");

LCD_ShowString(80,210,200,16,16,"Touch Area");

LCD_DrawLine(0,120,lcddev.width,120);

LCD_DrawLine(0,70,lcddev.width,70);

LCD_DrawLine(150,0,150,70);

POINT_COLOR=BLUE;//设置字体为蓝色

LCD_ShowString(160,30,200,16,16,"CPU: %");

LCD_ShowString(160,50,200,16,16,"SEM:000");

}

int main(void)

{

Stm32_Clock_Init(9); //系统时钟设置

uart_init(72,9600); //串口初始化为9600

delay_init(72); //延时初始化

LED_Init(); //初始化与LED连接的硬件接口

LCD_Init(); //初始化LCD

usmart_dev.init(72); //初始化USMART

BEEP_Init(); //蜂鸣器初始化

KEY_Init(); //按键初始化

tp_dev.init(); //触摸屏初始化

ucos_load_main_ui(); //加载主界面

OSInit(); //初始化UCOSII

OSTaskCreate(start_task,

(void *)0,

(OS_STK *)&START_TASK_STK[START_STK_SIZE-1],

START_TASK_PRIO );//创建起始任务

OSStart();

}

//开始任务

void start_task(void *pdata)

{

OS_CPU_SR cpu_sr=0;

pdata = pdata;

msg_key=OSMboxCreate((void*)0); //创建消息邮箱

sem_beep=OSSemCreate(0); //创建信号量

OSStatInit(); //初始化统计任务.这里会延时1秒钟左右OS_ENTER_CRITICAL(); //进入临界区(无法被中断打断)

OSTaskCreate(led_task,

(void *)0,

(OS_STK*)&LED_TASK_STK[LED_STK_SIZE-1],

LED_TASK_PRIO);

OSTaskCreate(touch_task,

(void *)0,

(OS_STK*)&TOUCH_TASK_STK[TOUCH_STK_SIZE-1],

TOUCH_TASK_PRIO);

OSTaskCreate(beep_task,

(void *)0,

(OS_STK*)&BEEP_TASK_STK[BEEP_STK_SIZE-1],

BEEP_TASK_PRIO);

OSTaskCreate(main_task,

(void *)0,

(OS_STK*)&MAIN_TASK_STK[MAIN_STK_SIZE-1],

MAIN_TASK_PRIO);

OSTaskCreate(key_task,

(void *)0,

(OS_STK*)&KEY_TASK_STK[KEY_STK_SIZE-1],

KEY_TASK_PRIO);

OSTaskSuspend(START_TASK_PRIO); //挂起起始任务.

OS_EXIT_CRITICAL(); //退出临界区(可以被中断打断)

}

//LED任务

void led_task(void *pdata)

{

u8 t;

while(1)

{

t++;

delay_ms(10);

if(t==8)LED0=1; //LED0灭

if(t==100) //LED0亮

{

t=0;

LED0=0;

}

}

}

//蜂鸣器任务

void beep_task(void *pdata)

{

u8 err;

while(1)

{

OSSemPend(sem_beep,0,&err);

BEEP=1;

delay_ms(60);

BEEP=0;

delay_ms(940);

}

}

//触摸屏任务

void touch_task(void *pdata)

{

while(1)

{

tp_dev.scan(0);

if(tp_dev.sta&TP_PRES_DOWN) //触摸屏被按下

{

if(tp_dev.x120)

{

TP_Draw_Big_Point(tp_dev.x,tp_dev.y,RED); //画图

delay_ms(2);

}

}else delay_ms(10); //没有按键按下的时候

}

}

//主任务

void main_task(void *pdata)

{

u32 key=0;

u8 err;

u8 semmask=0;

u8 tcnt=0;

while(1)

{

key=(u32)OSMboxPend(msg_key,10,&err);

switch(key)

{

case 1://控制DS1

LED1=!LED1;

break;

case 2://发送信号量

semmask=1;

OSSemPost(sem_beep);

break;

case 3://清除

LCD_Fill(0,121,lcddev.width,lcddev.height,WHITE);

break;

case 4://校准

OSTaskSuspend(TOUCH_TASK_PRIO); //挂起触摸屏任务

TP_Adjust();

OSTaskResume(TOUCH_TASK_PRIO); //解挂

ucos_load_main_ui(); //重新加载主界面

break;

}

if(semmask||sem_beep->OSEventCnt)//需要显示sem

{

POINT_COLOR=BLUE;

LCD_ShowxNum(192,50,sem_beep->OSEventCnt,3,16,0X80);//显示信号量的值

if(sem_beep->OSEventCnt==0)semmask=0; //停止更新

}

if(tcnt==50)//0.5秒更新一次CPU使用率

{

tcnt=0;

POINT_COLOR=BLUE;

LCD_ShowxNum(192,30,OSCPUUsage,3,16,0); //显示CPU使用率

}

tcnt++;

delay_ms(10);

}

}

//按键扫描任务

void key_task(void *pdata)

{

u8 key;

while(1)

{

key=KEY_Scan(0);

if(key)OSMboxPost(msg_key,(void*)key);//发送消息

delay_ms(10);

}

}

该部分代码我们创建了6个任务:start_task、led_task、beep_task、touch_task、main_task 和key_task,优先级分别是10和7~3,堆栈大小除了main_task是128,其他都是64。

该程序的运行流程就比上一章复杂了一些,我们创建了消息邮箱msg_key,用于按键任务和主任务之间的数据传输(传递键值),另外创建了信号量sem_beep,用于蜂鸣器任务和主任务之间的通信。

本代码中,我们使用了UCOSII提供的CPU统计任务,通过OSStatInit初始化CPU统计任务,然后在主任务中显示CPU使用率。另外,在主任务中,我们用到了任务的挂起和恢复函数,在执行触摸屏校准的时候,我们必须先将触摸屏任务挂起,待校准完成之后,再恢复触摸屏任务。这是因为触摸屏校准和触摸屏任务都用到了触摸屏和TFTLCD,而这两个东西是不支持多个任务占用的,所以必须采用独占的方式使用,否则可能导致数据错乱。【实验结果】

下载验证,在代码编译成功之后,我们通过下载代码到战舰STM32开发板上,可以看到LCD显示界面如图3.2所示:

图3.2 实验结果

从图中可以看出,默认状态下,CPU使用率仅为1%。此时通过在触摸区域画图,可以看到CPU使用率飙升(42%),说明触摸屏任务是一个很占CPU的任务;通过按KEY0,可以控制DS1的亮灭;通过按KEY1则可以控制蜂鸣器的发声(连续按下多次后,可以看到蜂鸣每隔1秒叫一次),同时,可以在LCD上面看到信号量的当前值;通过按KEY2,可以清除触摸屏的输入;通过按WK_UP可以进入校准程序,进行触摸屏校准。

基于STM32F103嵌入式实验指导书

实验一、STM32的开发环境与简单工程 一、实验目的 1、熟悉STM32开发板的开发环境; 2、熟悉MDK创建和配置STM32工程项目的基本流程; 3、熟悉STM32官方库的应用; 4、规范编程格式。 二、实验内容 本次实验配置MDK集成开发环境,新建一个简单的工程文件,添加STM32官方库并配置工程,编译运行这个工程文件。下载已经编译好的文件到开发板中运行。学会在程序中设置断点,观察系统内存和变量,为调试应用程序打下基础。 三、预备知识 基本单片机硬件知识、单片机软件编程语言、程序创建和调试的基本方法。 四、实验设备及工具 硬件:STM32开发平台 软件:STM32官方库;PC机操作系统Windows 98、Windows 2000或Windows XP;KEIL MDK 集成开发环境;串口转usb驱动。 五、实验步骤 1、在准备存放工程文件的目录下创建一新文件夹,命名为Proj_GPIO;在Proj_GPIO 文件夹里面分别再创建四个文件夹:CMSIS、USER、LIB、OBJ。如图1。 其中CMSIS(Cortex Microcontroller Software Interface Standard)用于存放Cortex-M 处理器系列的与供应商无关的软件抽象层和启动相关的代码文件; USER用于存放我们自己编写的代码文件(含自己移植的底层驱动),还有MDK工程; LIB存放所有的官方底层驱动库文件; OBJ用于工程输出的过程文件和最终的二进制文件。 图1

2、将官方库STM32F10x_StdPeriph_Lib_V3.5.0.rar解压。 1)把STM32F10x_StdPeriph_Lib_V3.5.0\Libraries\CMSIS\CM3\CoreSupport下的所有文件和STM32F10x_StdPeriph_Lib_V3.5.0\Libraries\CMSIS\CM3\DeviceSupport\ST\STM32F10x 下的所有文件都到第一步所创建的CMSIS文件夹中; 2)把STM32F10x_StdPeriph_Lib_V3.5.0\Libraries\STM32F10x_StdPeriph_Driver目录下的文件(目录inc和scr)复制到第一步创建的LIB文件夹中; 3)把STM32F10x_StdPeriph_Lib_V3.5.0\Project\STM32F10x_StdPeriph_Template目录下的stm32f10x_conf.h、stm32f10x_it.c、stm32f10x_it.h三个文件复制到USER文件夹中。 3、打开MDK软件,新建一个工程Proj_GPIO保存到Proj_GPIO/USER中。CPU选择STM32F103ZE,如图2; 图2 4、新建一个空文档main.c保存到USER中,然后根 据绝对路径将文件对应添加到工程中,如右图。 5、配置工程属性,右键点击工程文件中的Target 1选择Options for Target ‘Target 1’打开工程选项对话框。做如下修改: 1)Output选项勾选Create HEX File,然后点击Select Folder for Objects按钮定位输出文件保存目录到工程的OBJ文件; 2)Listing选项,同样点击Select Folder for Listings定位输出文件保存目录到工程的OBJ 文件; 3)C/C++选项,Define中填入 STM32F10X_HD, USE_STDPERIPH_DRIVER系统的两个基 本宏定义;配置Include Paths属性,加入工 程中包含头文件的目录;如右图

嵌入式系统综合实验一

嵌入式系统综合实验一

学号: 装 订 线 实验报告 课程名称: 嵌入式系统设计 指导老师:马永昌 成绩:________________ 实验名称:综合实验一dht11和人体感应传感器 实验类型:验证型 同组学生姓名:孙凡原 三、主要仪器设备(必填) 四、操作方法和实验步骤 五、实验数据记录和处理 六、实验结果与分析(必填) 七、讨论、心得 一、实验目的和要求 1.掌握字符设备驱动程序的基本结构和开发方法 2.掌握用户空间调用设备驱动的方法 3.掌握用户和内核的交互 二、实验内容和原理 专业:测控技术与仪器 姓名:颜睿

装订 线1.编写温湿度传感器DHT11驱动,传输打印温湿度信息 2.编写人体感应传感器驱动,控制LED灯亮灭 原理: 温湿度传感器DHT11: 1.引脚图 实际使用传感器没有NC引脚 2.数据采集 a.数据总时序 用户主机发送一次开始信号后,DHT11 从低功耗模式转换到高速模式,待主机开始信号结束后,DHT11 发送响应信号,送出40bit 的数据,幵触发一次信采集。

b.主机发送起始信号 连接DHT11的DATA引脚的I/O口输出低电平,且低 电平保持时间不能小于18ms,然后等待DHT11 作出 应答信号。 装 线 订 c.检测从机应答信号 DHT11 的DATA 引脚检测到外部信号有低电平时, 等待外部信号低电平结束,延迟后DHT11 的DATA 引脚处于输出状态,输出80 微秒的低电平作为应答信 号,紧接着输出80 微秒的高电平通知外设准备接收数 据。

装 订线 d.接收数据 (1)数据判定规则 位数据“0”的格式为:50 微秒的低电平和26-28 微秒的高电平,位数据“1”的格式为:50 微秒的低电平加70微秒的高电平。 接收数据时可以先等待低电平过去,即等待数据线拉高,再延时60us,因为60us大于28us且小于70us,再检测此时数据线是否为高,如果为高,则数据判定为1,否则为0。 (2)数据格式 一次传送40 位数据,高位先出 8bit 湿度整数数据+ 8bit 湿度小数数据+8bit 温度整

嵌入式ADS实验指导书

实验一嵌入式微处理器系统的开发环境 一、实验环境 PC机一台 软件: ADS 1.2集成开发环境一套 二、实验目的 1.了解嵌入式系统及其特点; 2.熟悉嵌入式系统的开发环境和基本配置并能编写简单的汇编程序 三、实验容 1.嵌入式系统的开发环境、基本配置 2.使用汇编指令完成简单的加法实验 四、实验步骤 (1)在D:\新建一个目录,目录名为experiment。 (2)点击 WINDOWS 操作系统的“开始|程序|ARM Developer Suite v1.2 |Code Warrior for ARM Developer Suite”启动Metrowerks Code Warrior,或双击“ADS 1.2”快捷方式启动。启动ADS 1.2 如图1-1所示: 图1-1启动ADS1.2 (3) 在CodeWarrior 中新建一个工程的方法有两种,可以在工具栏中单击“New”按钮, 也可以在“File”菜单中选择“New…”菜单。这样就会打开一个如图1-2 所示的对话框。选择【File】->【New…】,使用ARM Executable Image工程模板建立一个工程,名称为ADS,目录为D:\experiment。 图1-2 新建文件 在这个对话框中为用户提供了7 种可选择的工程类型:

1)ARM Executabl Image:用于由ARM 指令的代码生成一个ELF 格式的可执行映像文件;2)ARM Object Library:用于由ARM 指令的代码生成一个armar 格式的目标文件库; 3)Empty Project:用于创建一个不包含任何库或源文件的工程; 4)Makefile Importer Wizard:用于将Visual C 的nmake 或GNU make 文件转入到CodeWarrior IDE 工程文件; 5)Thumb ARM Executable Image:用于由ARM 指令和Thumb 指令的混和代码生成一个可执行的ELF 格式的映像文件; 6)Thumb Executable image:用于由Thumb 指令创建一个可执行的ELF 格式的映像文件;7)Thumb Object Library:用于由Thumb 指令的代码生成一个armar 格式的目标文件库。(4)选择【File】->【New…】建立一个新的文件TEST1.S,设置直接添加到项目中。输入如程序代码,并保存,此时在工程窗口中可以看到TEST1.S文件。 图1-3 新建test1.s (5) 选择【Edit】->【Perferences…】,在Font选项设置字体是Fixedsys,Script是CHINESE_GB2312。 图1-4 设置字体 (6) 选择【Edit】->【DebugRel Settings…】,在DebugRel Settings对话框的左边选择ARM Linker项,设置地址。 点击“DebugRel Settings…”图标按钮,即可进行工程的地址设置、输出文件设置、编

机器人技术实验指导书

工业机器人实验指导书实验一、工业机器人的安装与调试 一、实验学时:2学时 二、实验目的: 1、学习并掌握六自由度工业机器人的结构特点。 2、能根据安装说明书对机器人套件进行安装调试 三、实验设备: 1、六自由度工业机器人套件 2、LOBOT机器人舵机控制板 3、计算机一台 四、实验原理: 六自由度机械手臂是一套具有6个自由度的典型串联式小型关节型机械手臂, 带有小型手抓式;主要由机械系统和控制系统两大部分组成,其机械系统的各部分采用模块化结构,每个部分分别由一个伺服电动机来带动,每个电动机在根据控制要求以及程序的要求来运动从而实现运动要求。 此六自由度机械手臂的特点:1.手部和手腕连接处可拆卸,手部和手腕连接处为机械结构。b.手部是机械手臂的末端操作器,只能抓握一种工件或几种在形状、尺寸、质量等方面相近似的工件,只能执行一种作业任务。c.手部是决定整个机械手臂作业完成好坏,作业柔性好坏的关键部件之一。此机械手臂的手爪是机械钳爪式类别中的平行连杆式钳爪。

五、实验步骤: 1.首先,先熟悉一下需要用到的螺丝及铜柱 2.取1 个圆盘和1 个金属舵盘 3.用4 个M3*6 螺丝的将金属舵盘装在圆盘上面。 4.再取出1 个圆盘和1 个多功能支架,用M4*15 螺丝和螺母,将其固定 5.取2 个圆环+大轴承+双通铜柱(长15mm)+4 个M4*80 螺丝。 6.将螺丝穿入圆环。2 个圆环中间是轴承,下面用铜柱锁紧。(越紧越好)。 7.取出方孔圆盘+1 个MG996R 舵机,用4 个M4*8 螺丝和M4 螺母将舵机固 定在圆盘上。注意方向不要搞错,舵机输出轴在圆盘中心位置。这个舵机要调到90 度(中间)的位置,即往左往右都可以控制旋转90 度。 8.取出之前装好的带有金属舵盘的圆盘。将其固定在舵机输出轴上,注意 图中的位置,将小圆盘上2 个孔之间连线和方孔大圆上2 个孔之间的连线处于平行状态。 9.将之前装好的这两个部分,连到一起 10.方孔大圆盘下面用M4 螺母锁紧。 11.将另一个小圆盘,放上去,孔位和下面对准,取出4 个M4*20螺丝及螺丝, 将上下两个圆盘锁紧,越紧越好!(上螺丝的时候,手指可以抵着M4 螺

嵌入式微控制器技术实验任务书(附程序和仿真图)

“嵌入式微控制器技术”实验任务书(电气、自动化) 一、实验目的与要求: 1、熟练掌握基于SST89E554RC微控制器的Keil C51集成开发工具的操 作及调试程序的方法(包括:仿真调试与脱机运行间的切换方法);掌握 其他相关微控制器集成开发工具的使用及调试方法; 2、熟练掌握基于SST89E554RC单片机核心板及I/O扩展实验系统的电 路结构原理、设计与应用;掌握其他相关微控制器最小系统设计与应用; 3、熟练掌握在Keil C51与Proteus仿真软件虚拟联机环境下的基于51 单片机控制器数字接口电路的硬件、软件设计方法与功能调试; 4、完成本实验课程所要求的全部实验容,并写出实验报告。 二、微机原理与接口技术综合实验室资源简介 实验室为以下实验活动提供条件: 1、基于唐都实验系统的微机原理与接口技术实验(包括汇编语言、C 语言/C++语言软件编程实验和16位/32位微机接口电路应用实验); 2、基于SST89E554RC微控制器技术软/硬件实验(提供支持汇编语言、 C语言编程的Keil C51集成开发工具、最小核心板+唐都实验系统箱); 3、基于DSP2407、DSP2812、DSP28335微控制器技术软件/硬件实验(提 供支持C语言编程的TI公司的CCS集成开发工具、DSP系列学习开发板、直流电机、步进电机、液晶); 4、基于Freescale的16位MC9S12XS128微控制器技术应用实验(提 供支持C语言编程的CodeWarrier 5.0 For S12集成开发工具、 HF-MC9S12XS128EVB-A 核心板); 5、基于ARM的16/32位ARM7LPC2103TDMI-S微控制器技术基础实验(提供 支持C、C++语言编程的ARM公司推出的ARM微控制器ADS 1.2集成开发工具、EasyARM2103开发板); 6、基于ARM Cortex?-M3先进核的LM3S1138微控制器技术基础实验(提

嵌入式系统实验报告

实验报告 课程名称:嵌入式系统 学院:信息工程 专业:电子信息工程 班级: 学生姓名: 学号: 指导教师: 开课时间:学年第一学期

实验名称:IO接口(跑马灯) 实验时间:11.16 实验成绩: 一、实验目的 1.掌握 STM32F4 基本IO口的使用。 2.使用STM32F4 IO口的推挽输出功能,利用GPIO_Set函数来设置完成对 IO 口的配置。 3.控制STM32F4的IO口输出,实现控制ALIENTEK 探索者STM32F4开发板上的两个LED实现一个类似跑马灯的效果。 二、实验原理 本次实验的关键在于如何控制STM32F4的IO口输出。IO主要由:MODER、OTYPER、OSPEEDR、PUPDR、ODR、IDR、AFRH和AFRL等8个寄存器的控制,并且本次实验主要用到IO口的推挽输出功能,利用GPIO_Set函数来设置,即可完成对IO口的配置。所以可以通过了开发板上的两个LED灯来实现一个类似跑马灯的效果。 三、实验资源 实验器材: 探索者STM32F4开发板 硬件资源: 1.DS0(连接在PF9) 2.DS1(连接在PF10) 四、实验内容及步骤 1.硬件设计 2.软件设计 (1)新建TEST工程,在该工程文件夹下面新建一个 HARDWARE文件夹,用来存储以后与硬件相关的代码。然后在 HARDWARE 文件夹下新建一个LED文件夹,用来存放与LED相关的代码。 (2)打开USER文件夹下的test.uvproj工程,新建一个文件,然后保存在 LED 文件夹下面,保存为 led.c,在led.c中输入相应的代码。

(3)采用 GPIO_Set 函数实现IO配置。LED_Init 调用 GPIO_Set 函数完成对 PF9 和 PF10 ALIENTEK 探索者 STM32F407 开发板教程 119 STM32F4 开发指南(寄存器版) 的模式配置,控制 LED0 和 LED1 输出 1(LED 灭),使两个 LED 的初始化。 (4)新建一个led.h文件,保存在 LED 文件夹下,在led.h中输入相应的代码。 3.下载验证 使用 flymcu 下载(也可以通过JLINK等仿真器下载),如图 1.2所示: 图1.2 运行结果如图1.3所示:

嵌入式系统实验指导书

《嵌入式系统原理》实验指导书 目录 《嵌入式系统原理》实验指导书 (1) 目录 (1) 实验报告要求: ....................................................................................... 错误!未定义书签。 实验一Linux的初步使用 (2) 实验二linux驱动程序 (5) 实验三交叉编译程序 (11) 实验四编译内核与下载 (15)

实验一Linux的初步使用 实验目的: 熟练掌握linux命令的使用,linux程序的编译与调试 实验学时: 3学时 实验内容: 1.掌握虚拟机VMWARE的基本应用; 2. 掌握虚拟机中RED hat linux 的安装; 3. 掌握基本linux命令的使用; 4. 掌握linux程序编译与调试。 实验设备: 装有VMWARE的PC机一台,RED HAT安装光盘(或ISO映像文件)。 实验步骤: 1.创建一虚拟机MYLINUX 1)从桌面上单击“VMWARE WORKSTAION”启动虚拟机软件,单击新建虚拟 机,指定保存路径“D:\MYLINUX”,选择虚拟机操作系统类型:linux,然后 完成虚拟机的创建; 2)双击虚拟机中CDROM,选择将虚拟机光驱连接修改为:使用ISO映像,并指 定映像文件为共享磁盘:I:\redhat-disk-1.iso。 3)单击虚拟机中启动虚拟机,开始从光盘上启动系统并安装linux。 2.安装linux 注意: 在虚拟机和主机之间进行切换方法:鼠标单击虚拟机,可以进入;要回到主机,请用CTRL+ALT 1)输入回车,进入图形化安装;也可以linux text进入文本界面安装; 2)选择Skip(跳过CD检查),回车 3)点击NEXT(下一步) 4)安装语言,选择简体中文;或选择English 5)安装类型,选择定制:Custom 6)分区选择:自动分区

实验指导书(六自由度)

实验一:6SPT-1六自由度液压伺服平台综合实验、实验目的: 1、掌握电液位置伺服控制系统的基本原理; 2、掌握六自由度平台的结构解算的概念及其软件实现; 3、掌握VB6.0软件与下位机PAC通过以太网通信的方法; 4、掌握6SPT-1六自由度液压伺服平台复现指令信号的实施方法。 、预备知识: 1、熟练掌握PLC的梯形图语言(LD)编程和结构化文本语言(ST)编 程; 2、熟练掌握VB6.0编程,能使用VB6.0实现以太网通信; 3、有一定的矩阵计算能力。 二、试验原理: 1、电液位置伺服控制系统的基本原理 电液位置伺服控制系统以液体作为动力传输和控制介质,利用电信号进行控制输入和反馈。只要输入某一规律的输入信号,执行元件就能启动、快速并 准确地复现输入量的变化规律。控制系统结构图如图3.1所示: 图3.1电液位置伺服控制系统结构图 2、六自由度平台逆解算法

图3.2 空间机构位置关系示意图 六自由度平台又称为Stewart平台,其结构如图3.2所示,Stewart平台由 上、下两个平台、六个驱动关节和连接球铰组成,上平台为运动平台,下平台为基座,上、下平台的六个铰点分别组成一个六边形,连接6个液压缸作为驱动关节,每个液压缸两端各连接一个球铰。六个驱动关节的伸缩运动是独立的由液压比例压力阀控制各液压缸作伸缩运动,从而改变各个驱动缸的长度,使 动平台在空间的位置和姿态发生变化。因此该平台是通过六个驱动杆的协调动 作来实现三个线性移动及三个转动共六个自由度的运动。 S tewart平台机构的空间位置关系是指运动平台的六个自由度与六个驱动杆长度的关系,是研究该并联机构最基本的任务,也是机构速度、加速度、误差分析、工作空间分析、动力分析等的基础。 对于6-SPS平台机构,其特点是动静平台铰点共面,考虑到工作空间的对称性要求,将平台的6个铰点分成3组,三组铰点沿圆周120。均布,动、静平台的相邻两边到中心的夹角分别为30。和90° o 为求解六自由度平台的空间位置关系,首先在静、动平台上分别建立静、动坐标系。如图3.3所示,静坐标系XYZ原点0位于静平台的中心,X-Y平面

嵌入式系统综合实验一

实验名称: 姓名: 学号: 装 订 线 P.1 实验报告 课程名称: 嵌入式系统设计 指导老师:马永昌 成绩:________________ 实验名称:综合实验一dht11和人体感应传感器 实验类型:验证型 同组学生姓名:孙凡原 一、实验目的和要求(必填) 二、实验内容和原理(必填) 三、主要仪器设备(必填) 四、操作方法和实验步骤 五、实验数据记录和处理 六、实验结果与分析(必填) 七、讨论、心得 一、实验目的和要求 1.掌握字符设备驱动程序的基本结构和开发方法 2.掌握用户空间调用设备驱动的方法 3.掌握用户和内核的交互 二、实验内容和原理 1.编写温湿度传感器DHT11驱动,传输打印温湿度信息 2.编写人体感应传感器驱动,控制LED 灯亮灭 原理: 温湿度传感器DHT11: 1.引脚图 实际使用传感器没有NC 引脚 2.数据采集 a.数据总时序 用户主机发送一次开始信号后,DHT11 从低功耗模式转换到高速模式,待主机开始信号结束后,DHT11 发 专业:测控技术与仪器 姓名:颜睿 学号:3130103850 日期:2018.4.28 地点:创客空间

装订线送响应信号,送出40bit 的数据,幵触发一次信采集。 b.主机发送起始信号 连接DHT11的DATA引脚的I/O口输出低电平,且低电平保持时间不能小于18ms,然后等待DHT11 作出应答信号。 c.检测从机应答信号 DHT11 的DATA 引脚检测到外部信号有低电平时,等待外部信号低电平结束,延迟后DHT11 的DATA引脚处于输出状态,输出80 微秒的低电平作为应答信号,紧接着输出80 微秒的高电平通知外设准备接收数据。 d.接收数据 (1)数据判定规则 位数据“0”的格式为:50 微秒的低电平和26-28 微秒的高电平,位数据“1”的格式为:50 微秒的低电平加70微秒的高电平。 接收数据时可以先等待低电平过去,即等待数据线拉高,再延时60us,因为60us大于28us且小于70us,再检测此时数据线是否为高,如果为高,则数据判定为1,否则为0。

《嵌入式系统开发实训》实训指导书V1.0

《嵌入式系统开发实训》指导书 一、实训的目的和作用 实训是培养和锻炼学生在学习完《嵌入式系统开发》后综合应用所学理论知识解决实际工程设计和应用问题的能力、进行工程实训的重要教学环节,它具有动手、动脑,理论联系实际的特点,是培养在校工科大学生理论联系实际、敢于动手、善于动手和独立自主解决设计实践中遇到的各种问题能力的一种较好方法。 《嵌入式系统开发》是一门应用性、综合性、实践性较强的课程,没有实际的有针对性设计环节,学生就不能很好的理解和掌握所学的技术知识,更缺乏解决实际问题的能力。所以通过有针对性的实训,使学生学会系统地综合运用所学的技术理论知识,提高学生在嵌入式应用方面的开发与设计本领,系统的掌握嵌入式系统设计方法。 本实训是配合课堂教学的一个重要的实践教学环节,不仅要培养学生的实际动手能力,检验学生对本课程学习的情况,更要培养学生在实际的工程设计中查阅专业资料、工具书或参考书,掌握工程设计手段和软件工具,并能以图纸和说明书表达设计思想和结果的能力。培养学生事实求是和严肃认真的工作态度。 通过本实训使学生深入了解嵌入式系统开发的步骤与方法,掌握嵌入式系统的软硬件协同开发要点及使用方法。掌握能够根据实际问题综合应用嵌入式软件、硬件的基本技能,编写相应的程序。巩固和强化理论教学内容,综合课程教学中的实验环节,培养和锻炼学生的工程实践能力,具备嵌入式系统软硬件协同开发应用程序的能力。 二、实训主要内容与要求 要求每个学生(或小组)都要自己动手独立设计完成一个典型的嵌入式应用小系统。设计题目可以在给出的参考题目中选,也可以自己选设计题目,但难度不应小于参考题目,需经指导教师审查后方可确定是否采纳或修改设计题目。 一般以1~2人为一个小组,分工协作,可以进行充分的讨论和互助。完成所选课题的硬件和软件的设计与调试。独立解决设计和调试过程中遇到的基本问题。总结整个实践过程,写出实训报告(包括方案选择比较、总体思路、理论分析、系统设计,软件流程图,加注释的源程序,调试过程中遇到的问题及解决办法,总结与体会,参考文献)。 实训是在教师指导下,各组可以集体讨论,但实训报告由学生独立完成,不得互相抄袭。教师的主导作用主要在于指明设计思路,启发学生独立设计的思路,解答疑难问题和按设计进度进行阶段审查。学生必须发挥自身学习的主动性和能动性,主动思考问题、分析问题和解决问题,而不应处处被动地依赖指导老师查资料、给数据、定答案。同组同学要发扬团队协作精神,积极主动的提出问题、解决问题、讨论问题,互相帮助和启发。 实训报告每个学生一份,由课代表收齐后统一交给指导教师。实训成绩评定由3部分组成:验收答辩情况30%,实训作品质量40%,实训报告书30%。

土工实验指导书及实验报告

土工实验指导书及实验报告编写毕守一 安徽水利水电职业技术学院 二OO九年五月

目录 实验一试样制备 实验二含水率试验 实验三密度试验 实验四液限和塑限试验 实验五颗粒分析试验 实验六固结试验 实验七直接剪切试验 实验八击实试验 土工试验复习题

实验一试样制备 一、概述 试样的制备是获得正确的试验成果的前提,为保证试验成果的可靠性以及试验数据的可比性,应具备一个统一的试样制备方法和程序。 试样的制备可分为原状土的试样制备和扰动土的试样制备。对于原状土的试样制备主要包括土样的开启、描述、切取等程序;而扰动土的制备程序则主要包括风干、碾散、过筛、分样和贮存等预备程序以及击实等制备程序,这些程序步骤的正确与否,都会直接影响到试验成果的可靠性,因此,试样的制备是土工试验工作的首要质量要素。 二、仪器设备 试样制备所需的主要仪器设备,包括: (1)孔径0.5mm、2mm和5mm的细筛; (2)孔径0.075mm的洗筛; (3)称量10kg、最小分度值5g的台秤; (4)称量5000g、最小分度值1g和称量200g、最小分度值0.01g的天平;

(5)不锈钢环刀(内径61.8mm、高20mm;内径79.8mm、高20mm或内径61.8mm、高40mm); (6)击样器:包括活塞、导筒和环刀; (7)其他:切土刀、钢丝锯、碎土工具、烘箱、保湿器、喷水设备、凡士林等。 三、试样制备 (一)原状土试样的制备步骤 1、将土样筒按标明的上下方向放置,剥去蜡封和胶带,开启土样筒取土样。 2、检查土样结构,若土样已扰动,则不应作为制备力学性质试验的试样。 3、根据试验要求确定环刀尺寸,并在环刀内壁涂一薄层凡士林,然后刃口向下放在土样上,将环刀垂直下压,同时用切土刀沿环刀外侧切削土样,边压边削直至土样高出环刀,制样时不得扰动土样。 4、采用钢丝锯或切土刀平整环刀两端土样,然后擦净环刀外壁,称环刀和土的总质量。 5、切削试样时,应对土样的层次、气味、颜色、夹杂物、裂缝和均匀性进行描述。 6、从切削的余土中取代表性试样,供测定含水率以及颗粒分析、界限含水率等试验之用。

嵌入式实验指导书 (修改6)20161025

嵌入式系统技术及应用 实验指导书 (第3版) 郑普亮编写 西安建筑科技大学信控学院 智能建筑与楼宇自动化实验室 2014年5月

目录 1课程简介、实验项目及学时安排 (1) 1.1课程简介 (1) 1.2实验项目及学时安排 (1) 2实验仪器仪表设备简介 (2) 2.1嵌入式系统实验箱 (2) 2.2其它实验设备 (2) 3嵌入式系统技术及应用课程实验 (3) 3.1实验1系统认识实验 (3) 3.2实验2定时器实验 (10) 3.3实验3PWM发生器实验 (14) 3.4实验416*16LED点阵显示汉字实验 (16)

1课程简介、实验项目及学时安排 1.1课程简介 嵌入式系统广泛应用于仪器仪表、工业控制、汽车电子等多个领域,是一个综合性的快速发展的技术方向。课程以ARM Cortex-M3系列处理器为主,着重介绍了嵌入式系统设计的基本概念、基于ARM处理器的体系结构、ARM微处理器的编程模型与指令系统、嵌入式操作系统及相关的接口技术。 通过对本课程的学习,能够使学生深刻了解ARM处理器的工作原理,熟练掌握ARM 微处理器的指令系统,以及嵌入式系统软硬件设计基本方法,进而加强学生独立设计能力和创新能力的培养。 1.2实验项目及学时安排 本课程的实验目的是使学生掌握ARM指令系统及基于C语言和驱动程序库的程序设计方法,掌握ARM微处理器各组成部分工作原理及应用,培养学生对ARM微处理器的应用程序与硬件电路的设计能力,提高学生分析和解决实际问题的能力,从而为学生今后走向工作岗位、从事相关专业领域的科学研究和技术开发打下扎实的基础。所以安排了验证性、设计性和综合性不同属性的实验项目。 序号实验项目学时 实验性质 验证综合设计 1系统认识实验2√ 2定时器实验2√ 3PWM发生器实验2√416*16LED点阵显示汉字实验2√ 注:实验项目根据实验教学安排选取。

嵌入式系统实验实验报告

嵌入式系统实验实验报告 一、实验目的 1.基本实验

. Word 资料搭建PXA270嵌入式LINUX开发软硬件环境;安装LINUX操 作系统;安装与配置建立宿主机端交叉编译调试开发环境;配置宿主机 PC 机端的minicom(或超级终端)、TFTP服务、NFS服务,使宿主PC机与PXA270开发板可以通过串口通讯,并开通TFTP 和NFS服务。 2.人机接口 键盘驱动;LCD控制;触摸屏数据采集与控制实验; 3.应用实验 完成VGA显示;Web服务器实验;网络文件传输实验;多线程应用实验。 4.扩展应用实验 完成USB摄像头驱动与视频采集;GPS实验;GSM/GPRS通讯;视频播放移植;USB蓝牙设备无线通讯;NFS文件服务器;蓝牙视频文件服务器。 5.QT实验 完成基本嵌入式图形开发环境搭建;“Hello world!”QT初探;创建一个窗口并添加按钮;对象通信:Signal和Slot;菜单和快捷键;工具条和状态栏;鼠标和键盘事件;对话框;QT的绘图;俄罗斯方块;基于QT的GSM手机在嵌入式LINUX下的设计与实现。 二、实验内容 1.人机接口实验 实验十九键盘驱动实验 ?实验目的:矩阵键盘驱动的编写

?实验内容:矩阵键盘驱动的编写 ?作业要求:完成键盘加减乘除运算 ?实验作业源码及注释: #INCLUDE #INCLUDE #INCLUDE #INCLUDE #INCLUDE #INCLUDE #DEFINE DEVICE_NAME “/DEV/KEYBOARD” INT MAIN(VOID){ INT FD; INT RET; UNSIGNED CHAR BUF[1]; INT I,F,J; DOUBLE X; INT A[2]={0}; CHAR PRE_SCANCODE=0XFF; FD=OPEN(DEVICE_NAME,O_RDWR); IF(FD==-1)PRINTF(“OPEN DEVICE %S ERROR\N”,DEVICE_NAME); ELSE{ BUF[0]=0XFF; I=0;F=0; WHILE(1){ READ(FD,BUF,1);

嵌入式系统实验指导指导书完整版

嵌入式系统实验指导王艳春英一劲松

实验一嵌入式微处理器系统的开发环境 一、实验环境 PC机一台 软件: ADS 1.2集成开发环境一套 二、实验目的 1.了解嵌入式系统及其特点; 2.熟悉嵌入式系统的开发环境和基本配置并能编写简单的汇编程序 三、实验容 1.嵌入式系统的开发环境、基本配置 2.使用汇编指令完成简单的加法实验 四、实验步骤 (1)在D:\新建一个目录,目录名为experiment。 (2)点击 WINDOWS 操作系统的“开始|程序|ARM Developer Suite v1.2 |Code Warrior for ARM Developer Suite”启动Metrowerks Code Warrior,或双击“ADS 1.2”快捷方式启动。启动ADS 1.2 如图1-1所示: 图1-1启动ADS1.2 (3) 在CodeWarrior 中新建一个工程的方法有两种,可以在工具栏中单击“New”按钮, 也可以在“File”菜单中选择“New…”菜单。这样就会打开一个如图1-2 所示的对话框。选择【File】->【New…】,使用ARM Executable Image工程模板建立一个工程,名称为ADS,目录为D:\experiment。 图1-2 新建文件 在这个对话框中为用户提供了7 种可选择的工程类型:

1)ARM Executabl Image:用于由ARM 指令的代码生成一个ELF 格式的可执行映像文件;2)ARM Object Library:用于由ARM 指令的代码生成一个armar 格式的目标文件库; 3)Empty Project:用于创建一个不包含任何库或源文件的工程; 4)Makefile Importer Wizard:用于将Visual C 的nmake 或GNU make 文件转入到CodeWarrior IDE 工程文件; 5)Thumb ARM Executable Image:用于由ARM 指令和Thumb 指令的混和代码生成一个可执行的ELF 格式的映像文件; 6)Thumb Executable image:用于由Thumb 指令创建一个可执行的ELF 格式的映像文件;7)Thumb Object Library:用于由Thumb 指令的代码生成一个armar 格式的目标文件库。(4)选择【File】->【New…】建立一个新的文件TEST1.S,设置直接添加到项目中。输入如程序代码,并保存,此时在工程窗口中可以看到TEST1.S文件。 图1-3 新建test1.s (5) 选择【Edit】->【Perferences…】,在Font选项设置字体是Fixedsys,Script是CHINESE_GB2312。 图1-4 设置字体 (6) 选择【Edit】->【DebugRel Settings…】,在DebugRel Settings对话框的左边选择ARM Linker项,设置地址。 点击“DebugRel Settings…”图标按钮,即可进行工程的地址设置、输出文件设置、编

实验五实验六指导书

实验五 MATLAB 实现DFT MATLAB 为计算数据的离散快速傅时叶变换,提供了一系列丰富的数学函数,主要有fft 、ifft 、fft2、ifft2和czt 等。当所处理的数据的长度为2的幂次时,采用基-2算法进行计算,计算速度会显著增加。所以,要尽可能使所要处理的数据长度为2幂次或者用添零的方式来添补数据使之成为2的幂次。 1.fft 和ifft 函数 调用格式是: (1)()X fft Y = 如果X 是向量,则采用傅时叶变换来求解X 的离散傅里叶变换;如果X 是矩阵,则计算该矩阵每一列的离散傅里叶变换;如果X 是()D N *维数组,则是对第一个非单元素的维进行离散傅里叶变换。 (2)()N X fft Y ,= N 是进行离散傅里叶变换的X 的数据长度,可以通过对X 进行补零或截取来实现。 (3)[]()dim ,,X fft Y =或()dim ,,N X fft Y = 在参数dim 指定的维上进行离散傅里叶变换;当X 为矩阵时,dim 用来指定变换的实施方向:dim=1,表明变换按列进行;dim=2,表明变换按行进行。 函数ifft 的参数应用与函数fft 完全相同。 2.fft2和ifft2函数 调用格式是: (1)()X fft Y 2= 如果X 是向量,则此傅里叶变换即变成一维傅里叶变换fft ;如果X 是矩阵,则是计算该矩阵的二维快速傅里叶变换;数据二维傅里叶变换fft 2(X )相当于()()''X fft fft ,即先对X 的列做一维傅里叶变换,然后再对变换结果的行做一维傅里叶变换。 (2)()N M X fft Y ,,2= 通过对X 进行补零或截断,使得X 成为()N M *的矩阵。 函数ifft2的参数应用与函数fft2完全相同 fftn 、ifftn 是对数据进行多维快速傅立变换,其应用与fft2、ifft2类似;在此,不再叙述。 3.czt 函数 调用格式是: ()A W M X czt X ,,,= 式中X 是待变换的时域信号()n x ,其长度设为N ,M 是变换的长度,W 确定变换的步

嵌入式linux实验指导书

嵌入式linux实验指导书 实验一:arm裸机实验 实验条件: pc ADS开发环境FL2440开发套件SecureCRT串口超级终端 实验目的: 熟悉arm裸机开发基本步骤,掌握ADS集成开发环境的使用,能够编写简单的裸机程序并下载到开发板运行测试。 实验原理: ADS 全称为ARM Developer Suite ,是ARM 公司推出的新一代ARM 集成开发工具。ADS 由命令行开发工具、ARM 实时库、GUI 开发环境(Code Warrior 和AXD) 、实用程序和支持软件组成。有了这些部件,用户就可以为ARM 系列的RISC 处理器编写和调试自己开发的应用程序了。本次实验利用ADS集成开发环境建立基于arm9 S3C2440的实验工程,完成工程搭建、代码编写和编译,生成可执行文件并下载到开发板进行运行测试。 实验步骤: 1、首先打开ADS软件CodeWarrior,点击File 菜单下的New 来创建新工程。Project 对话框中选择ARM Executable Image 。在Project name 中输入工程名,例:2440_led,点击“Location:”文本框的“Set...”按钮,选择要将工程保存的路径,然后点击确定即可建立一个新的工程。工程建立之后会出现一个24 40_led.mcp 窗口。 2、创建源文件,点击File 菜单下的New,选择标签页File,在File name 中输入要建立的文件名,如:Init.s (.s 文件为arm 中的汇编文件),若此时选上了Add to Project,创建的文件会自动添加到工程中,选择target方式为DebugRel,点击确定关闭窗口,文件创建完成后编写代码。(可将arm_linux文件夹下的裸机例程代码复制到工程中进行修改,如:复制裸机程序中的led程序init.s led.c 到建立的工程文件目录中,点击Project 菜单下的Add Fils 将源文件添加到工程中)

嵌入式应用开发实验指导书 (1)

实验一基本接口实验(一) [实验设备] 1.JXARM9-2410教学实验箱 2.ADT1000仿真器和ADT IDE集成开发环境 3.串口、并口连接线 [实验目的] 1.掌握ARM的串行口工作原理,编程实现ARM的UART通讯; 2.掌握嵌入式系统中断的处理流程和ARM中断编程; 3.在ADT环境下如何建立工程,对工程进行正确的设置。添加相应文件(汇编、脚本、.c 源文件等) [实验内容一] 实现查询方式串口的收发功能。接收来自串口(通过超级终端)的字符并将接收到的字符发送到超级终端。 [预备知识] 1.了解ADT集成开发环境的基本功能 2.学习串口通讯的基本知识 3. 熟悉S3C2410串口有关的寄存器 [基础知识] 串行通信接口电路组成 1.可编程的串行接口芯片 2.波特率发生器 3.EIA与TTL电平转换器 4.地址译码电路 通信协议: 1.异步协议 2.同步协议 异步串行通讯 异步串行方式是将传输数据的每个字符一位接一位(例如先低位、后高位)地传送。 数据的各不同位可以分时使用同一传输通道,因此串行I/O 可以减少信号连线,最少用一对线即可进行。 接收方对于同一根线上一连串的数字信号,首先要分割成位,再按位组成字符。为了恢复发送的信息,双方必须协调工作。 在微型计算机中大量使用异步串行I/O 方式,双方使用各自的时钟信号,而且允许时钟频率有一定误差,因此实现较容易。但是由于每个字符都要独立确定起始和结束(即每个字符都要重新同步),字符和字符间还可能有长度不定的空闲时间,因此效率较低。 异步串行通信中的字符传送格式

开始前,线路处于空闲状态,送出连续“1”。传送开始时首先发一个“0” 作为起始位,然后出现在通信线上的是字符的二进制编码数据。 每个字符的数据位长可以约定为5位、6位、7位或8位,一般采用ASCII编码。后面是奇偶校验位,根据约定,用奇偶校验位将所传字符中为“1”的位数凑成奇数个或偶数个。也可以约定不要奇偶校验,这样就取消奇偶校验位。 最后是表示停止位的“1”信号,这个停止位可以约定持续1 位、1.5 位或2 位的时间宽度。 至此一个字符传送完毕,线路又进入空闲,持续为“1”。经过一段随机的时间后,下一个字符开始传送才又发出起始位。 每一个数据位的宽度等于传送波特率的倒数。微机异步串行通信中,常用的波特率为110,150,300,600,1200,2400,4800,9600 等。 DB-25 DB-9引脚定义 DB-25 DB-9引脚说明

嵌入式linux实验指导书

目录 实验一 linux常用指令练习 (3) 1、在线帮助指令 (3) 2、linux开关机及注销指令。 (3) 重启指令: (3) 1)、reboot命令 (3) 2)、init 6命令 (3) 关机指令: (3) 1)、halt命令 (3) 2)、poweroff命令 (4) 3)、init 0命令 (4) 4)、shutdown命令 (4) 注销指令: (4) 3、用户管理命令 (4) 1)、用户切换su命令 (4) 2)、添加用户命令adduser/useradd (5) 3)、删除用户及更改用户属性 (5) 4)、设置用户密码 (6) 5)、查看用户信息 (6) 4、文件目录操作指令 (7) 1)、改变当前工作目录命令(cd) (7) 2)、显示当前路径pwd (7) 3)、查看当前目录下的文件命令ls (7) 4)、新建目录指令mkdir (8) 5)、删除目录命令rmdir (8) 6)、新建文件命令touch (8) 7)、删除文件指令rm (8) 8)、文件和目录的复制命令cp (8) 9)、文件和目录的移动命令mv (9) 10)、更改文件或目录的使用权限chmod (9) 11)、查看文件的命令cat (9) 12)、文件链接命令ln (9) 13)、文件压缩解压命令 (10) 5、网络相关命令 (11) 6、磁盘管理命令 (11) 7、挂载文件命令mount (12) 8、其他系统命令 (12) 练习1: (13) 练习2: (15) 练习3: (16) 练习4: (21) 实验二 VI文本编辑器的使用 (24) 1、练习使用VI指令 (24) 2、利用VI编写一个hello.c文件 (24)

计算机网络实验指导书(6个实验)

实验一交换机的基本配置 一.实验原理 1.1以太网交换机基础 以太网的最初形态就是在一段同轴电缆上连接多台计算机,所有计算机都共享这段电缆。所以每当某台计算机占有电缆时,其他计算机都只能等待。这种传统的共享以太网极大的受到计算机数量的影响。为了解决上述问题,我们可以做到的是减少冲突域类的主机数量,这就是以太网交换机采用的有效措施。 以太网交换机在数据链路层进行数据转发时需要确认数据帧应该发送到哪一端口,而不是简单的向所有端口转发,这就是交换机MAC地址表的功能。 以太网交换机包含很多重要的硬件组成部分:业务接口、主板、CPU内存、Flash、电源系统。以太网交换机 的软件主要包括引导程序和核心操作系统两部分。 1.2以太网交换机配置方式 以太网交换机的配置方式很多,如本地Console 口配置,Telnet远程登陆配置,FTP TFTP配置和哑终端方式 配置。其中最为常用的配置方式就是Console 口配置和Telnet远程配置。 1.3以太网交换机基本配置方法 1.3.1交换机的用户界面交换机有以下几个常见命令视图: (1)用户视图:交换机开机直接进入用户视图,此时交换机在超级终端的标识符为。 (2)系统视图:在用户视图下输入实system-view命令后回车,即进入系统视图。在此视图下交换机的标识符 为:。](3)以太网端口视图:在系统视图下输入interface命令即可进入以太网端口视图。在此视图下交换 机的标识符为:。 (4)VLAN配置视图:在系统视图下输入vlan vlan —number即可进入VLAN配置视图。在此视图下交换机的标识符为:。 (5)VTY用户界面视图:在系统视图下输入user-interface vty number 即可进入VTY用户界面视图。在此视图下交 换机的标识符为:。 进行配置时,需要注意配置视图的变化,特定的命令只能在特定的配置视图下进行。 1.3.2交换机的常用帮助在使用命令进行配置的时候,可以借助交换机提供的帮助功能快速完成命令的查找和配置。 (1)完全帮助:在任何视图下,输入?”获取该视图下的所有命令及其简单描述。 (2)部分帮助:输入一命令,后接以空格分隔的?”,如果该位置为关键字,则列岀全部关键字及其描述;如果该位置为参数,则列岀有关的参数描述。 在部分帮助里面,还有其他形式的帮助,如键入一字符串其后紧接?”,交换机将列岀所有以该字符串开头的命令; 或者键入一命令后接一字符串,紧接?”,列岀命令以该字府串开头的所有关键字。 实验内容:交换机配置方法

相关主题
文本预览
相关文档 最新文档