我的又一次实验

嵌入式实验报告

嵌入式软件设计第6次实验报告

 

学号:120201109             姓名:陈瑶

组别:第4组                实验地点:D19

 

一、实验目的:

1、了解UCOS操作系统任务调度原理。

2、掌握UCOS时间管理函数的用法。

3、掌握信号量的用法。

二、实验内容:

1.编写程序完成两个LED任务的轮流调度。

2.编写程序利用信号量完成键盘驱动LED和蜂鸣器的任务。(按键KEY0控制LED0灯的亮灭,按键KEY1控制蜂鸣器鸣叫。)

三、实验过程描述及结果展示:

 1)实验一:

#include "sys.h"

#include "delay.h"

#include "usart.h"

#include "led.h"

#include "includes.h"

//USOSII任务的一般设置

//START_TASK任务

//设置任务的优先级

#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[START_STK_SIZE];

//任务函数

void led0_task(void *pdata);

//LED1任务

//设置任务优先级

#define LED1_TASK_PRIO 6

//设置任务堆栈的大小

#define LED1_STK_SIZE 64

//任务堆栈

OS_STK LED1_TASK_STK[START_STK_SIZE];

//任务函数

void led1_task(void *pdata);

int main(void)

{

delay_init(168);//初始化处理器时钟

uart_init(115200);//初始化串口波特率为115200

LED_Init();//初始化LED端口

//以下代码对UCOSII操作系统进行操作

{

  OSInit();

//创建启始任务

OSTaskCreate(start_task,(void *)0,(OS_STK *)&START_TASK_STK[START_STK_SIZE-1],START_TASK_PRIO);

printf("ENTER MAIN ACCESS\r\n");

OSStart();//启动操作系统,一去不回。

}

}

//开始任务

void start_task(void *pdata)

{

OS_CPU_SR cpu_sr=0;//临界区宏使用

pdata = pdata;//防止编译器报警

OS_ENTER_CRITICAL();//进入临界区

//创建LED0和LED1任务

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)

{

  pdata=pdata;

while(1)

{

printf("LED0_TASK_Running!\r\n");

LED0 =0;//点亮LED0

OSTimeDly(100);

LED0 =1;

OSTimeDly(100);

}

}

//LED1任务

void led1_task(void *pdata)

{

  pdata=pdata;

while(1)

{

printf("LED1_TASK_Running!\r\n");

LED1 =0;//点亮LED0

OSTimeDly(100);

LED1 =1;

OSTimeDly(100);

}

}

 

 

四、总结及实验心得:

通过本次实验我学习到了UCOS操作系统任务调度原理,UCOS时间管理函数的用法,信号量的用法。在实验操作前,老师给我们详细讲解了实验的操作原理和操作过程。根据老师的讲解我们开始自己动手,在动手的过程中并不像老师讲的那样简单。在实验中遇到了很多问题,在解决问题的时候增加了我们小组的配合默契程度,同时也不知不觉中将今天的内容消化吸收。实验结束后还有一种意犹未尽的感觉。有一些知识并没有完全理解,所以学习中不但要向老师学习,还要向周围的同学学习,继续把欠缺的知识和技能尽快掌握。

 

   

 

 

   

 

posted on 2017-03-10 08:52  陈小瑶  阅读(130)  评论(0编辑  收藏  举报