第一范文网 - 专业文章范例文档资料分享平台

uC - OS-II实验指导书2014

来源:用户分享 时间:2025/6/5 14:43:15 本文由loading 分享 下载这篇文档手机版
说明:文章内容仅供预览,部分内容可能不全,需要完整文档或者需要复制内容,请下载word后使用。下载word有问题请添加微信号:xxxxxxx或QQ:xxxxxx 处理(尽可能给您提供完整文档),感谢您的支持与谅解。

static void TaskStartCreateTasks (void) {

INT8U i;

for (i = 0; i < N_TASKS; i++) { /* Create N_TASKS identical tasks */

TaskData[i] = i; /* Each task will display its own letter */

}

OSTaskCreate(Task0, (void *)&TaskData[i], &TaskStk[i][TASK_STK_SIZE - 1], 5); OSTaskCreate(Task1, (void *)&TaskData[i], &TaskStk[1][TASK_STK_SIZE - 1], 6); }

TaskStart任务完成上述操作后将自己挂起,操作系统将调度当前优先级最高的应用任务Task0运行。 应用任务

应用任务Task0运行后将自己挂起,之后操作系统就会调度处于就绪状态的优先级最高的任务,具体代码如下: void Task0 (void *pdata) {

INT8U i; INT8U err; i=*(int *)pdata;

for (;;) { ……

} }

应用任务Task1运行后将Task0唤醒,使其进入到就绪队列中: void Task1 (void *pdata) {

INT8U i;

/*此处为输出信息,显示任务运行的状态 */

err=OSTaskSuspend(5); /* suspend itself */

INT8U err; i=*(int *)pdata;

for (;;) {

OSTimeDly(150); ……

/*此处为输出信息,显示任务运行的状态 */

13

OSTimeDly(150);

err=OSTaskResume(5); /* resume task0 */

}

}

3 运行及观察应用输出信息

按照本实验手册第一部分所描述的方法建立应用项目并完成构建,当我们在LambdaTOOL调试器的控制下运行构建好的程序后,将看到在μC/OS-Ⅱ内核的调度管理下,两个应用任务不断切换执行的情形:

T1时刻的截图

14

T2时刻的截图

T3时刻的截图

15

T4时刻的截图

4 本实验中所用到的μC/OS-II相关函数

4.1 OSTaskCreate()

建立一个新任务。任务的建立可以在多任务环境启动之前,也可以在正在运行的任务中建立。中断处理程序中不能建立任务。一个任务可以为无限循环的结构。

函数原型:INT8U OSTaskCreate(void (*task)(void *pd), void *pdata, OS_STK *ptos, INT8U prio); 参数说明:task是指向任务代码首地址的指针。

Pdata指向一个数据结构,该结构用来在建立任务时向任务传递参数。

返回值:

OSTaskCreate()的返回值为下述之一: ? OS_NO_ERR:函数调用成功。

? OS_PRIO_EXIST:具有该优先级的任务已经存在。

? OS_PRIO_INVALID:参数指定的优先级大于OS_LOWEST_PRIO。 ? OS_NO_MORE_TCB:系统中没有OS_TCB可以分配给任务了。

4.2 OSTaskSuspend()

无条件挂起一个任务。调用此函数的任务也可以传递参数OS_PRIO_SELF,挂起调用任务本

16

搜索更多关于: uC - OS-II实验指导书2014 的文档
uC - OS-II实验指导书2014.doc 将本文的Word文档下载到电脑,方便复制、编辑、收藏和打印
本文链接:https://www.diyifanwen.net/c7v1os3skfc01k8200sna_4.html(转载请注明文章来源)
热门推荐
Copyright © 2012-2023 第一范文网 版权所有 免责声明 | 联系我们
声明 :本网站尊重并保护知识产权,根据《信息网络传播权保护条例》,如果我们转载的作品侵犯了您的权利,请在一个月内通知我们,我们会及时删除。
客服QQ:xxxxxx 邮箱:xxxxxx@qq.com
渝ICP备2023013149号
Top