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)在线全文阅读。
相关推荐: