嵌入式课程设计(交通灯与uCOS-的移植与应用)(2)

2019-08-30 23:23

五、仿真效果。(用屏幕抓图的方式将PROTEUS运行仿真效果图粘贴在下面)

6

设计任务二 uC/OS-Ⅱ的移植与应用

一、设计目的:

1.了解嵌入式实时操作系统uC/OS-Ⅱ可移植、可裁剪等性能特点,正确理解实时操作系统中任务、信号、消息、中断等基本概念以及uC/OS-Ⅱ多任务管理的调度算法;

2.掌握uC/OS-Ⅱ在ARM7上移植的方法;

3.能将uC/OS-Ⅱ移植在LPC2106中,并根据具体要求创建用户任务,解决实际问题;

二、具体任务:

1.uC/OS-Ⅱ移植在LPC2106中。

2.编写用户任务程序,完成实时温度的采集控制。硬件电路见参考硬件电路图,图中用滑动变阻器代替温度传感器转换后的电压,用ADC0809完成A/D转换,并用数码管显示出来。

三、参考硬件电路。(用文字对所设计的电路功能、原理做详细说明)

附图:

7

硬件电路说明:

复位电路,

时钟电路(仿真可略), ARM7微处理器LPC2106, 温度电压值输入电路,

A/D转换器ADC0808(8bit), 按键电路SW,

四位数码管显示电路。

四、源程序。(只将C语言应用程序附在后面,其它项目文档不要提供,C语言应用程序要有一定的注释说明)

源程序:

/********************************************************************************************************/

#include \

#define TASK_STK_SIZE 64 #define key 0x00001000 //按键

#define adstart 0x00002000 //AD采样开始 #define adend 0x00004000 //AD结束 const uint32 led_code[16]={0x0000003F,0x00000006,0x0000005B,0x0000004F,0x00000066,0x0000006D,0x0000007D,0x00000007,

8

0x0000007F,0x00000006F,0x00000077,0x0000007C,0x00000039,0x0000005E,0x00000079,0x00000071};

OS_STK Task0Stk[TASK_STK_SIZE]; OS_STK Task1Stk[TASK_STK_SIZE]; OS_STK Task2Stk[TASK_STK_SIZE]; INT32U i;

void Task0(void *data); void Task1(void *data); void Task2(void *data);

/********************************************************************************************************* ** 函数名称: main

** 功能描述: c语言的主函数,由它启动多任务环境

********************************************************************************************************/ int main (void) { OSInit(); OSTaskCreate(Task0, (void *)0, &Task0Stk[TASK_STK_SIZE - 1],1); OSTaskCreate(Task1, (void *)0, &Task1Stk[TASK_STK_SIZE - 1],2); OSTaskCreate(Task2, (void *)0, &Task2Stk[TASK_STK_SIZE - 1],3); OSStart(); return 0; }

void delay(INT32U t) { uint32 x,y; for(x=t;x>0;x--) for(y=110;y>0;y--); }

void L_Init (void) //初始化 {

PINSEL0=0x00000000;

PINSEL1=0x00000000;

9

IODIR|= 0x00002fFF; }

/********************************************************************************************************* ** 函数名称:Task0

** 功能描述: μCOS-II的第一个任务,通常由它初始化目标板和建立其它任务

********************************************************************************************************/ void Task0(void *p_arg) {

p_arg = p_arg; TargetInit(); L_Init(); for(;;) {

while((IOPIN&key)!=0);//假如按键没有按下,则一直循环在这里 L_Init();

while((IOPIN&key)==0);//按键被按下又弹起,程序顺序执行 IOCLR= 0x0000ffFF;

OSTaskSuspend(OS_PRIO_SELF); // OSTimeDlyHMSM(0,0,0,8); // IOSET=adstart;

// OSTimeDlyHMSM(0,0,0,1); // IOCLR=adstart;

// OSTimeDlyHMSM(0,0,0,1); // IOSET=adstart; } }

/**************************************************************************************************** ** 函数名称:Task1

** 功能描述: μCOS-II的第2个任务,AD转换

********************************************************************************************************/ void Task1(void *p_arg) {

p_arg = p_arg;

10


嵌入式课程设计(交通灯与uCOS-的移植与应用)(2).doc 将本文的Word文档下载到电脑 下载失败或者文档不完整,请联系客服人员解决!

下一篇:2018年乡镇党政领导班子履行党风廉政建设主体责任情况汇报

相关阅读
本类排行
× 注册会员免费下载(下载后可以自由复制和排版)

马上注册会员

注:下载文档有可能“只有目录或者内容不全”等情况,请下载之前注意辨别,如果您已付费且无法下载或内容有问题,请联系我们协助你处理。
微信: QQ: