为什么在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. 时钟节拍中断进去了没有,没有节拍没有一切 优先级为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. 那就是说你的osstart函数返回了,那你要检查一下任务切换函数是不是有问题,正常应该不返回的 初学,看看
页:
[1]