我用的是周立功的UC/OS-II工程模板,程序运行很正常,但是一调用OSTaskQuery(OS_PRIO_SELF,&task_data);//试图得到任务的状态,,程序就会出错,丢进了未定义死盾环。查了很久都没有找到原因,清大家指点,或者给个例程来参考一下!,3Q
///////////////////
#include "config.h"
#include "stdlib.h"
#include <stdio.h> /* prototype declarations for I/O functions */
#include <LPC21XX.H> /* LPC21xx definitions */
#include "Main.h"
#define Task0StkLengh 32 //Define the Task0 stack length 定义用户任务0的堆栈长度
OS_STK Task0Stk [Task0StkLengh]; //Define the Task0 stack 定义用户任务0的堆栈
void Task0(void *pdata)
{
OS_TCB task_data;
UINT8 err;
pdata=pdata;
TargetInit(); //初始化时钟
GPIO_init(LED1); //设置端口为GPIO
GPIO_inout(LED1,OUTPUT); //设置端口为输出模式
while(1)
{
/*下面的这条语句,如果去丢程序就会正常运行,如果不去调程序就会跳到未定义Undefined,导致程序死盾环*/
err=OSTaskQuery(OS_PRIO_SELF,&task_data);//试图得到任务的状态
if(GPIO_READ(LED1)) //取反LED
{
GPIO_SET(LED1,LOW);
}
else
{
GPIO_SET(LED1,HIGH);
}
OSTimeDly(20);//延时
}
}
int main(void)
{
OSInit(); //初始化OS
OSTaskCreate (Task0,(void *)0, &Task0Stk[Task0StkLengh - 1], 2);//创建任务
OSStart (); //启动OS
return 0;
}
|