我在写程序时遇到这么一个问题,我创建了一个任务TaskLED1,想它在被调用运行时把它的信息(优先级为 9 的任务TaskLED1正在运行!)显示到上位机上,可就是显示不出来,我用的板子是周立功的ARM2138.上位机用的是easyarm.exe软件。相关程序如下。请高手指点,谢谢...................
void Task0 (void *pdata)
{ pdata = pdata;
TargetInit ();
OSTaskCreate (TaskLED1,(void *)0, &TaskLED1Stk[TaskLED1StkSize - 1], 9,TaskLED1StkSize);
while (1)
{
OSTimeDly(100);
}
}
void TaskLED1(void *pdata)
{ pdata = pdata;
char *msg; // 避免编译警告
PINSEL2 = PINSEL2 & (~0x08); // P1[25:16]选择GPIO
IO1DIR |= LED1; // 设置LED1控制口输出
IO1CLR = LED1;
msg = "优先级为 9 的任务TaskLED1正在运行!";
UART0_SendStr(msg);
UART0_SendStr("\r\n");
for (;;)
{
IO1SET = LED1;
OSTimeDly(VI_TICKS_PER_SEC*10);
IO1CLR = LED1;
OSTimeDly(VI_TICKS_PER_SEC*10);
}
}
我用过周立功的1138,也有这样的问题,我的是UART是通过USB送到终端的
所以我觉得看看TargetInit (); 里的uart初始化
首先检查一下你的Timer0是否正确配置好,如果没有配置好Timer,OS是不会切换任务的。
TargetInit (); 里的uart初始化的波特率与上位机的比特率设置是否一样?