搜索
bottom↓
回复: 0

初学者求大侠帮忙改进程序

[复制链接]

出0入0汤圆

发表于 2011-5-25 19:53:05 | 显示全部楼层 |阅读模式
刚刚移植了一个ucos-ii,建立了三个任务用以实现多任务调度,结果出现问题,部分代码如下:
int main(void)
{

        ARMTargetInit();        // do target (uHAL based ARM system) initialisation //
        OSInit();  
        OSTaskCreate(SYS_Task,  (void *)0,  (OS_STK *)&SYS_Task_Stack[STACKSIZE-1],  SYS_Task_Prio);
        OSTaskCreate(Task2,  (void *)0,  (OS_STK *)&Task2_Stack[STACKSIZE-1],  Task2_Prio);
        OSTaskCreate(Task1,  (void *)0,  (OS_STK *)&Task1_Stack[STACKSIZE-1],  Task1_Prio);
        OSTaskCreate(Task3,  (void *)0,  (OS_STK *)&Task3_Stack[STACKSIZE-1],  Task3_Prio);
        OSStart();              // start the game //
        // never reached //
        return 0;
}//main

void Task1(void *Id)     
{
        int i;
        float d;

        init_ADdevice();
        Uart_Printf("\n");

   while(1)
        {
                for(i=0; i<=3; i++)
                {//采样0~3路A/D值
                        d=GetADresult(i)*2.5/1023; // 数据 采集,处理
                        Uart_Printf("a%d=%f\t",i,d);
                        Delay(1000);
                }       
                Uart_Printf("\r");
        }

        OSTimeDly(2000);

}
void Task3(void *Id)     
{
        U32 key;
    Zlg7289_Reset();//zlg7289复位
        while(1)
        {         key=GetKey();//得到按键值
                Delay(1);
                ZLG7289_ENABLE();//使zlg7289占有同步串口
                Delay(5);//延时
        WriteSDIO(ZLG7289_CMD_DATA0|0);//数码管以方式0译码,第一个数码管亮
                WriteSDIO(key%10);//显示个位
                Delay(1);//延时
                if(key>9)
                {//键值大于9显示十位
                        WriteSDIO(ZLG7289_CMD_DATA0|1);//发送十位数据
                        WriteSDIO((unsigned char)(key/10));
                        Delay(1);
                        WriteSDIO(ZLG7289_CMD_HIDE);//使一、二两位数码管显示
                        WriteSDIO(3);
                }
                else
                {//键值小于10不显示十位
                        WriteSDIO(ZLG7289_CMD_HIDE);//使个位数码管显示
                        WriteSDIO(1);
                }
                ZLG7289_DISABLE();//zlg7289放弃同步串口控制权
        }
        OSTimeDly(2000);
}

void SYS_Task(void *Id)
{
        uHALr_InstallSystemTimer();
        Uart_Printf("start system task.\n");
        for (;;)
        {
                OSTimeDly(10000);
        }
}


在主任务中一共设置了三个任务,只截取了其中的任务一和三,我运行程序之后,超级终端显示只有任务一在运行,同学说任务一中的while(1)这是一个死循环,无法跳出执行其他任务,求高手指点一二,新手所学太少,因时间原因求各位高手相助,小弟有礼了

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

一只鸟敢站在脆弱的枝条上歇脚,它依仗的不是枝条不会断,而是自己有翅膀,会飞。
回帖提示: 反政府言论将被立即封锁ID 在按“提交”前,请自问一下:我这样表达会给举报吗,会给自己惹麻烦吗? 另外:尽量不要使用Mark、顶等没有意义的回复。不得大量使用大字体和彩色字。【本论坛不允许直接上传手机拍摄图片,浪费大家下载带宽和论坛服务器空间,请压缩后(图片小于1兆)才上传。压缩方法可以在微信里面发给自己(不要勾选“原图),然后下载,就能得到压缩后的图片】。另外,手机版只能上传图片,要上传附件需要切换到电脑版(不需要使用电脑,手机上切换到电脑版就行,页面底部)。
您需要登录后才可以回帖 登录 | 注册

本版积分规则

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

GMT+8, 2024-5-23 09:50

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

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