《嵌入式应用技术》课件——第5讲 创建uCOSIII流水灯任务.pdf
《嵌入式技术应用》课程
基于uCOSIII的LED流水灯设计
适用平台:STM32F10x
主讲教师:杜锋
创建uCOSIII流水灯任务
目录
Contents
1
流水灯功能描述
2
流水灯子任务及功能描述
3
创建流水灯子任务知识目标
了解知道
掌握了解
掌握理解
掌握
1.流水灯功能描述
流水灯功能描述
◆流水灯任务主要完成两大功能:
●D1每隔100毫秒闪烁一次;
●D1~D8每隔500毫秒轮流点亮;
◆实际工作过程请看演示视频
2.流水灯子任务及功能描述
流水灯子任务
◆为了完成流水灯功能,我们创建了三个任务
●起始任务(start_task);
●控制D1闪烁的任务(led0_task);
●控制D1~D8轮流点亮的任务(led1_task);
◆为了完成流水灯功能,我们创建了三个任务
●起始任务(start_task):在本任务中首先完成led0_task和led1_task两个任务的创建,然后挂起自己;
●任务0(led0_task):本任务主要完成D1的闪烁控制,延时和任务切换控制;
●任务1(led1_task):本任务主要完成D1~D8的闪烁控制,延时和任务切换控制。
3.创建流水灯任务
创建起始任务
1)函数OSTaskCreate()所需参数宏定义
#defineSTART_TASK_PRIO3//任务优先级
#defineSTART_STK_SIZE512//任务堆栈大小
OS_TCBStartTaskTCB;//任务控制块
CPU_STKSTART_TASK_STK[START_STK_SIZE];//任务堆栈
voidstart_task(void*p_arg);//任务函数
3.创建流水灯任务
创建起始任务
2)在主函数中创建起始任务
OSTaskCreate((OS_TCB*)StartTaskTCB,//任务控制块
(CPU_CHAR*)starttask,//任务名字
(OS_TASK_PTR)start_task,//任务函数
(void*)0,//传递给任务函数的参数
(OS_PRIO)START_TASK_PRIO,//任务优先级
(CPU_STK*)START_TASK_STK[0],//任务堆栈基地址
(CPU_STK_SIZE)START_STK_SIZE/10,//任务堆栈深度限位
(CPU_STK_SIZE)START_STK_SIZE,//任务堆栈大小
(OS_MSG_QTY)0,//任务内部消息队列能够接收的最大消息数目,为0时禁止接收消息
(OS_TICK)0,//当使能时间片轮转时的时间片长度,为0时为默认长度
(void*)0,//用户补充的