曲径通幽论坛

 找回密码
 立即注册
搜索
查看: 7647|回复: 0
打印 上一主题 下一主题

建立uc/os-ii任务

[复制链接]

4918

主题

5880

帖子

3万

积分

GROAD

曲径通幽,安觅芳踪。

Rank: 6Rank: 6

积分
34387
跳转到指定楼层
楼主
发表于 2009-4-14 01:45:38 | 只看该作者 回帖奖励 |倒序浏览 |阅读模式
           任务一
任务功能:每隔 1s 就在屏幕上显示一个大写字母 'M',显示完后清屏,继续循环显示。
目的:初步应用 uc/os-ii,掌握任务建立的基本流程。
任务代码:

#include "includes.h"
#define  TASK_STK_SIZE                 512                   /*定义任务堆栈为512个字 */
OS_STK        TaskStartStk[TASK_STK_SIZE];        /*定义任务堆栈*/

void  TaskStart(void *pdata);                                      /*声明任务原型*/
void  main (void)
{
    PC_DispClrScr(DISP_FGND_WHITE + DISP_BGND_BLACK);      /*清屏,黑背景白前景*/
    OSInit();                                              /* 初始化 uC/OS-II  */
    PC_DOSSaveReturn();                                    /*保存MS-DOS返回环境*/
    PC_VectSet(uCOS, OSCtxSw);                             /*安装 uC/OS-II's 切换向量*/
   OSTaskCreate(TaskStart, (void *)0, &TaskStartStk[TASK_STK_SIZE - 1], 0); /*建立任务*/
 
  OSStart();                                             /*开始多任务管理*/
}

void  TaskStart (void *pdata)
{
#if OS_CRITICAL_METHOD == 3                                /* Allocate storage for CPU status register */
  OS_CPU_SR  cpu_sr;
#endif
  INT16S     key;
  INT8U x = 0;
  INT8U y = 0;
  pdata = pdata;                                         /*阻止编译器警告*/

    OS_ENTER_CRITICAL();
    PC_VectSet(0x08, OSTickISR);                               /*安装 uC/OS-II's clock tick ISR        */
    PC_SetTickRate(OS_TICKS_PER_SEC);                      /* Reprogram tick rate                      */
    OS_EXIT_CRITICAL();
    OSStatInit();                                          /* Initialize uC/OS-II's statistics         */

    for (;;) {
  while( y <= 3 )               /*此任务仅显示完3行5列的M字母后便清屏重新显示*/
  {
   while( x <= 5)
   {
    PC_DispChar( x, y, 'M', DISP_FGND_WHITE);                                 
    x++;
      if (PC_GetKey(&key) == TRUE)
     {
      if (key == 0x1B)
      {
       PC_DOSReturn();
      }
     }
    OSTimeDlyHMSM(0, 0, 1, 0);
    }
    y++;
    x = 0;
  }

  PC_DispClrScr(DISP_FGND_WHITE + DISP_BGND_BLACK);
  x = 0;
  y = 0;
  }
}


        
您需要登录后才可以回帖 登录 | 立即注册

本版积分规则

小黑屋|手机版|Archiver|曲径通幽 ( 琼ICP备11001422号-1|公安备案:46900502000207 )

GMT+8, 2024-5-19 10:39 , Processed in 0.077708 second(s), 22 queries .

Powered by Discuz! X3.2

© 2001-2013 Comsenz Inc.

快速回复 返回顶部 返回列表