更改

跳转至: 导航搜索

NBDK-L4:LiteOS实验教程

添加854字节2019年4月8日 (一) 14:18
los_led_entry.c
此文件为本实验的重点内容,也就是我们使用LiteOS创建的独立LED控制任务。
基于los的LED独立任务创建函数,在创建一个task任务时,我们需要做如下步骤:基于los的LED独立任务创建函数,在创建一个task任务时,我们需要做如下步骤(结合具体的代码,不过单纯的框架步骤):
1.使用TSK_INIT_PARAM_S结构体定义一个创建task任务的参数结构
5.给当前任务取一个名称,此任务我们取名“LED-Demo”
6.分配优先级,任务一共有32个优先级(0-31),最高优先级为0,最低优先级为31 7.锁任务调度,防止高优先级任务调度,影响任务正常创建 8.利用刚刚的任务参数创建新的任务,创建一个LED任务 9.解锁任务,让任务按照优先级进行调度<syntaxhighlight lang="c++" line="1" start="43">
void LOS_BoardLedEntry(void)
{
// 定义用于创建任务的参数的结构
TSK_INIT_PARAM_S stTaskInitParam;
// 锁任务调度
LOS_TaskLock();
(VOID)memset((void *)(&stTaskInitParam), 0, sizeof(TSK_INIT_PARAM_S)); // 任务参数清空
stTaskInitParam.usTaskPrio = 10; // 任务优先级
// 创建此任务,由于任务锁,不会马上执行 uwRet = LOS_TaskCreate(&g_uwLedTaskID, &stTaskInitParam); // 创建此任务
if (uwRet != LOS_OK)
{
GUI_DispStringAtCL("led task create failed",10,32,GUI_Context.colorInfo.bkColor); // 打印创建lcd task失败 return;
}
// 解锁任务调度,此时会发生任务调度,执行就绪列表中最高优先级任务
LOS_TaskUnlock();
GUI_DispStringAtCL("led task create success",10,32,GUI_Context.colorInfo.bkColor); // 打印创建lcd task成功
return;
}
</syntaxhighlight>led任务的功能入口函数,在这个函数中,我们利用任务延时函数LOS_TaskDelay(),让LED灯周期点亮和熄灭。<syntaxhighlight lang="c++" line="1" start="7282">
static LITE_OS_SEC_TEXT VOID LOS_BoardLedTskfunc(VOID)
{
while (1)
{
// 点亮LED,LCD打印"LED=ON",延时500ms,任务延时500ms
BSP_EvbLedControl(LED_ON);
GUI_DispStringAtCL("LED=ON",10,3264,GUI_Context.colorInfo.bkColor);
(void)LOS_TaskDelay(500);
// 熄灭LED,LCD打印"LED=OFF",延时500ms,任务延时500ms
BSP_EvbLedControl(LED_OFF);
GUI_DispStringAtCL("LED=OFF",10,3264,GUI_Context.colorInfo.bkColor);
(void)LOS_TaskDelay(500);
}
}
</syntaxhighlight>
510
个编辑

本PDF由谷雨文档中心自动生成,点击下方链接阅读最新内容。

取自“http://doc.iotxx.com/特殊:移动版差异/1693

导航菜单