搜索
bottom↓
回复: 3

学习修改:uC/OS-II第1个实例

[复制链接]

出0入0汤圆

发表于 2009-4-16 08:48:25 | 显示全部楼层 |阅读模式
/*
*********************************************************************************************************
*                                                uC/OS-II
*                                          The Real-Time Kernel
*
*                           (c) Copyright 1992-2002, Jean J. Labrosse, Weston, FL
*                                           All Rights Reserved
*
*                                               EXAMPLE #1
*********************************************************************************************************
*/

#include "includes.h"
/*
*********************************************************************************************************
*                                               CONSTANTS
*********************************************************************************************************
*/

#define  TASK_STK_SIZE                 512       /* Size of each task's stacks (# of WORDs)            */
#define PrioTask0                                                0          //        任务0的优先级号       
#define PrioTask1                                                1          //        任务1的优先级号       
#define PrioTask2                                                2          //        任务2的优先级号       

OS_STK        Task0Stk[TASK_STK_SIZE];        /* Tasks stacks                                  */
OS_STK        Task1Stk[TASK_STK_SIZE];        /* Tasks stacks                                  */
OS_STK        Task2Stk[TASK_STK_SIZE];        /* Tasks stacks                                  */


void  Task0(void *pdata);
void  Task1(void *pdata);
void  Task2(void *pdata);


/*
*********************************************************************************************************
*                                              STARTUP TASK
*********************************************************************************************************
*/
void  Task0(void *pdata)
{
#if OS_CRITICAL_METHOD == 3                                /* Allocate storage for CPU status register */
        OS_CPU_SR  cpu_sr;
#endif
        INT16S     key;

        pdata = pdata;                                         /* Prevent compiler warning                 */

        OS_ENTER_CRITICAL();
        PC_VectSet(0x08, OSTickISR);                           /* Install uC/OS-II's clock tick ISR        */
        PC_SetTickRate(OS_TICKS_PER_SEC);                      /* Reprogram tick rate                      */
        OS_EXIT_CRITICAL();
        OSTaskCreate(Task1, (void *)0, &Task1Stk[TASK_STK_SIZE - 1], PrioTask1);
        OSTaskCreate(Task2, (void *)0, &Task2Stk[TASK_STK_SIZE - 1], PrioTask2);
        while (1)
        {
                if (PC_GetKey(&key) == TRUE)
                {
                        if (key == 0x1B)                                                           // 按ESC键,返回到DOS
                        {
                                PC_DOSReturn();                            /* Return to DOS                            */
                        }
                }
                printf("TASK 0\n");
                OSTimeDlyHMSM(0, 0, 1, 0);                         // 1秒运行1次
        }
}



void  Task1(void *pdata)
{
        pdata = pdata;                                         /* Prevent compiler warning                 */

        while (1)
        {
                printf("TASK 1\n");
                OSTimeDlyHMSM(0, 0, 2, 0);                         // 2秒运行1次
        }
}


void  Task2 (void *pdata)
{
        pdata = pdata;                                         /* Prevent compiler warning                 */

        while (1)
        {
                printf("TASK 2\n");
                OSTimeDlyHMSM(0, 0, 5, 0);                         // 5秒运行1次
        }
}



void  main (void)
{
    OSInit();                                              /* Initialize uC/OS-II                      */
    PC_DOSSaveReturn();                                    /* Save environment to return to DOS        */
    PC_VectSet(uCOS, OSCtxSw);                             /* Install uC/OS-II's context switch vector */
    OSTaskCreate(Task0, (void *)0, &Task0Stk[TASK_STK_SIZE - 1], PrioTask0);
    OSStart();                                             /* Start multitasking                       */
}


  以下是运行结果:


(原文件名:多任务-未命名.JPG)

阿莫论坛20周年了!感谢大家的支持与爱护!!

一只鸟敢站在脆弱的枝条上歇脚,它依仗的不是枝条不会断,而是自己有翅膀,会飞。

出0入0汤圆

发表于 2009-6-18 14:35:56 | 显示全部楼层
能否分享一下你在PC上的仿真环境!!

出0入0汤圆

 楼主| 发表于 2009-6-22 13:58:00 | 显示全部楼层
不存在仿真环境

1、上面的就是源代码
  但是建立的目录结构必须和原作者相同。
2、直接用BORLAND C++3.1 for DOS编译成.exe文件
3、在windows XP 下双击运行
头像被屏蔽

出0入0汤圆

发表于 2010-2-14 21:17:13 | 显示全部楼层
提示: 作者被禁止或删除 内容自动屏蔽
回帖提示: 反政府言论将被立即封锁ID 在按“提交”前,请自问一下:我这样表达会给举报吗,会给自己惹麻烦吗? 另外:尽量不要使用Mark、顶等没有意义的回复。不得大量使用大字体和彩色字。【本论坛不允许直接上传手机拍摄图片,浪费大家下载带宽和论坛服务器空间,请压缩后(图片小于1兆)才上传。压缩方法可以在微信里面发给自己(不要勾选“原图),然后下载,就能得到压缩后的图片】。另外,手机版只能上传图片,要上传附件需要切换到电脑版(不需要使用电脑,手机上切换到电脑版就行,页面底部)。
您需要登录后才可以回帖 登录 | 注册

本版积分规则

手机版|Archiver|amobbs.com 阿莫电子技术论坛 ( 粤ICP备2022115958号, 版权所有:东莞阿莫电子贸易商行 创办于2004年 (公安交互式论坛备案:44190002001997 ) )

GMT+8, 2024-5-21 01:23

© Since 2004 www.amobbs.com, 原www.ourdev.cn, 原www.ouravr.com

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