kevin_2006 发表于 2009-1-5 10:48:37

为什么在UCOSII任务里连一个LED灯都点不亮呢?【恢复】

我手上的目标板是LPC2103的,移植了UCOSII系统,编译通过没有问题.

我写了一个任务,任务里只点亮一个LED灯,但是灯始终点不亮.

我后来屏蔽掉操作系统,直接点LED灯,灯亮.

我把系统恢复后,在系统函数下面接着写了点灯程序,灯也亮.

也就说好像我的任务根本就没有进去执行.不知道是什么问题.

源程序附上,希望各位大虾帮忙看看!

非常感谢!

#include "config.h"

#include "includes.h"



#define LED1 1<<20

#define TaskStkLengh 64

OS_STK TaskLEDStk;





void TaskLED(void *pdata);





int main (void)

{// add user source code 

    OSInit();

    OSTaskCreate(TaskLED,(void*)0,&TaskLEDStk,3);

    OSStart();

   //PINSEL1=0X00000000;

  //IO0DIR=LED1;

  //IO0CLR=LED1;

  //while(1);

    return 0;

}



void TaskLED(void *pdata)

{

   pdata=pdata;

   TargetInit();

   PINSEL1=0x00;

   IO0DIR=IO0DIR|LED1;

   while(1)

    {

      IO0CLR=LED1;

      OSTimeDly(25);

      IO0SET=LED1;

      OSTimeDly(25);

    

    }

}



整个工程文件ourdev_572603.rar(文件大小:415K) (原文件名:ucos_test.rar) 



本贴被 kevin_2006 编辑过,最后修改时间:2009-01-05,11:24:27.

ralfak 发表于 2009-1-30 14:57:32

时钟节拍中断进去了没有,没有节拍没有一切

gcc312628 发表于 2009-1-11 16:31:30

优先级为3的任务只有一个么?

TargetInit(); 也许有问题

TargetInit()函数体是空的怎么可以啊?

void TargetInit(void)

{

    /* 添加自己的代码 */

                                                    系统时钟(必须)

                                                    锁相环

                                                    管脚

>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>

                                                    



    /* Add your codes here */

}

void TaskLED(void *pdata)

{

   pdata=pdata;

   /////////////////////////////////////////TargetInit();

   PINSEL1=0x00;

   IO0DIR=IO0DIR|LED1;

   while(1)

    {

      IO0CLR=LED1;

      OSTimeDly(25);

      IO0SET=LED1;

      OSTimeDly(25);

    

    }

}

调用的位置是对的.但是函数体是空等于什么也没做.

根据你的意思这个函数是初始化硬件的,首先是锁相环和系统时钟

本贴被 gcc312628 编辑过,最后修改时间:2009-01-11,16:40:38.

yangsen 发表于 2009-1-5 11:53:13

那就是说你的osstart函数返回了,那你要检查一下任务切换函数是不是有问题,正常应该不返回的

womenhome 发表于 2009-5-20 17:11:16

初学,看看
页: [1]
查看完整版本: 为什么在UCOSII任务里连一个LED灯都点不亮呢?【恢复】