打印
[ZLG-ARM]

UCOS的第一个例子看不懂 请教

[复制链接]
1183|1
手机看帖
扫描二维码
随时随地手机跟帖
跳转到指定楼层
楼主
clever0725|  楼主 | 2008-10-27 09:59 | 只看该作者 回帖奖励 |倒序浏览 |阅读模式
ucos, TI, ST, se, IO
很简单的程序
KEY1按下 蜂鸣器响两次
void  TaskStart(void *pdata)
{
    pdata = pdata;                                                  /* 避免编译警告 */

    TargetInit();                                                   /* 目标板初始化 */
    IODIR &= ~KEY1;                                                    /* 设置KEY1为输入*/
    IOSET = BEE;
    IODIR |= BEE;                                                    /* 设置蜂鸣器为输出*/
    PINSEL0 = (PINSEL0 & 0xcffff3ff);                               /* 管教选择模块初始化 */
    
    OSTaskCreate(Task, (void *)0, &TaskStk[TASK_STK_SIZE - 1], 10); /* 创建任务     */

    for (;;)
    {
        OSTaskSuspend(OS_PRIO_SELF);
        IOCLR = BEE;
        OSTimeDly(OS_TICKS_PER_SEC / 8);
        IOSET = BEE;
        OSTimeDly(OS_TICKS_PER_SEC / 4);

        IOCLR = BEE;
        OSTimeDly(OS_TICKS_PER_SEC / 8);
        IOSET = BEE;
        OSTimeDly(OS_TICKS_PER_SEC / 4);
    }
}

void  Task(void *pdata)
{
    pdata = pdata;                                      /* 避免编译警告 */

    for (;;)
    {
        OSTimeDly(OS_TICKS_PER_SEC / 50);               /* 延时20毫秒 */
        if ((IOPIN & KEY1) != 0)
        {
            continue;
        }
        OSTimeDly(OS_TICKS_PER_SEC / 50);               /* 延时20毫秒 */
        if ((IOPIN & KEY1) != 0)
        {
            continue;
        }
        OSTaskResume(0);
        while ((IOPIN & KEY1) == 0)
        {
            OSTimeDly(OS_TICKS_PER_SEC / 50);           /* 延时20毫秒 */
        }
    }
}

在TaskStart里创建任务后 是只是建立 还是建立后就运行了呢?
谁能说说整个流程?




相关帖子

沙发
ZLG_Dengz| | 2008-10-27 19:03 | 只看该作者

回答

OSStart (); 之后系统开始对任务进行调度
OSTaskCreate();之后该任务开始参与调度

具体细节,只能通过阅读UCOSII源码来了解咯。

使用特权

评论回复
发新帖 我要提问
您需要登录后才可以回帖 登录 | 注册

本版积分规则

10

主题

51

帖子

0

粉丝