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

嵌入式实时操作系统uCOS-II(中文版)(6)

来源:网络收集 时间:2021-09-24 下载这篇文档 手机版
说明:文章内容仅供预览,部分内容可能不全,需要完整文档或者需要复制内容,请下载word后使用。下载word有问题请添加微信号:或QQ: 处理(尽可能给您提供完整文档),感谢您的支持与谅解。点击这里给我发消息

sprintf(s, "%3ld %3ld %3ld %5d",

(2)

data.OSFree + data.OSUsed, data.OSFree, data.OSUsed, time);

PC_DispStr(19, 12+i, s, DISP_FGND_YELLOW); } }

OSTimeDlyHMSM(0, 0, 0, 100); } }

(3)

程序清单L1.14所示的任务2在屏幕上显示一个顺时针旋转的指针(用横线,斜线等字符表示—译者注),每200ms旋转一格。

程序清单 L 1.14 任务2

void Task2 (void *data) {

data = data; for (;;) {

PC_DispChar(70, 15, '|', DISP_FGND_WHITE + DISP_BGND_RED); OSTimeDly(10);

PC_DispChar(70, 15, '/', DISP_FGND_WHITE + DISP_BGND_RED); OSTimeDly(10);

PC_DispChar(70, 15, '-', DISP_FGND_WHITE + DISP_BGND_RED); OSTimeDly(10);

PC_DispChar(70, 15, '\\', DISP_FGND_WHITE + DISP_BGND_RED); OSTimeDly(10); } }

任务3(程序清单 L1.15)也显示了与任务2相同的一个旋转指针,但是旋转的方向不同。任务3在堆栈中分配了一个很大的数组,将堆栈填充掉,使得OSTaskStkChk()只需花费很少的时间来确定堆栈的利用率,尤其是当堆栈已经快满的时候。

程序清单 L 1.15 任务3

void Task3 (void *data)

{

char dummy[500]; INT16U i; data = data;

for (I = 0; i < 499; i++) { dummy[i] = '?'; }

for (;;) {

PC_DispChar(70, 16, '|', DISP_FGND_WHITE + DISP_BGND_BLUE); OSTimeDly(20);

PC_DispChar(70, 16, '\\', DISP_FGND_WHITE + DISP_BGND_BLUE); OSTimeDly(20);

PC_DispChar(70, 16, '-', DISP_FGND_WHITE + DISP_BGND_BLUE); OSTimeDly(20);

PC_DispChar(70, 16, '/', DISP_FGND_WHITE + DISP_BGND_BLUE); OSTimeDly(20); } }

任务4(程序清单L1.16)向任务5发送消息并等待确认[程序清单L1.16(1)]。发送的消息是一个指向字符的指针。每当任务4从任务5收到确认[程序清单L1.16(2)],就将传递的ASCII码加1再发送[程序清单L1.16(3)],结果是不断的传送“ABCDEFG....”。

程序清单 L 1.16 任务4

void Task4 (void *data) {

char txmsg; INT8U err;

data = data; txmsg = 'A'; for (;;) {

while (txmsg <= 'Z') {

OSMboxPost(TxMbox, (void *)&txmsg); OSMboxPend(AckMbox, 0, &err);

(1) (2)

txmsg++; }

txmsg = 'A'; } }

(3)

当任务5 [程序清单L1.17]接收消息后[程序清单L1.17(1)](发送的字符),就将消息显示到屏幕上[程序清单L1.17(2)],然后延时1秒[程序清单L1.17(3)],再向任务4发送确认信息。

程序清单 L 1.17 任务5

void Task5 (void *data) {

char *rxmsg; INT8U err;

data = data; for (;;) {

rxmsg = (char *)OSMboxPend(TxMbox, 0, &err);

(1)

PC_DispChar(70, 18, *rxmsg, DISP_FGND_YELLOW+DISP_BGND_RED); (2) OSTimeDlyHMSM(0, 0, 1, 0); OSMboxPost(AckMbox, (void *)1); } }

(3)

(4)

TaskClk()函数[程序清单L1.18]显示当前日期和时间,每秒更新一次。

程序清单 L 1.18 时钟显示任务

void TaskClk (void *data) {

Struct time now; Struct date today; char s[40];

百度搜索“77cn”或“免费范文网”即可找到本站免费阅读全部范文。收藏本站方便下次阅读,免费范文网,提供经典小说医药卫生嵌入式实时操作系统uCOS-II(中文版)(6)在线全文阅读。

嵌入式实时操作系统uCOS-II(中文版)(6).doc 将本文的Word文档下载到电脑,方便复制、编辑、收藏和打印 下载失败或者文档不完整,请联系客服人员解决!
本文链接:https://www.77cn.com.cn/wenku/yiyao/1250294.html(转载请注明文章来源)
Copyright © 2008-2022 免费范文网 版权所有
声明 :本网站尊重并保护知识产权,根据《信息网络传播权保护条例》,如果我们转载的作品侵犯了您的权利,请在一个月内通知我们,我们会及时删除。
客服QQ: 邮箱:tiandhx2@hotmail.com
苏ICP备16052595号-18
× 注册会员免费下载(下载后可以自由复制和排版)
注册会员下载
全站内容免费自由复制
注册会员下载
全站内容免费自由复制
注:下载文档有可能“只有目录或者内容不全”等情况,请下载之前注意辨别,如果您已付费且无法下载或内容有问题,请联系我们协助你处理。
微信: QQ: