-
持续关注,期待解决, 我继续研究下。
-
2个群都已经满员了啊,新群是147640063,我帮楼主更新下。
-
看帖回帖是一种美德
-
打个比方,假设CPU是一把刀,要用来切苹果跟菠萝这2个任务,苹果切一刀再菠萝切一刀,轮番的切,而CPU一条指令(切一刀)执行时间都是非常快的,最起码也是us级的,人类当然分辨不了了,也就是说这么短的时间内就从切苹果转去切菠萝了,所以你看到的好像是同时切的,但是事实上是轮流切的。操作系统就是这么工作的。
比喻的不是很好,希望你能看懂,建议你买本操作系统的书看看,了解了解。
-
额,我失误, 这论坛不提供代码编辑器,蛋疼,我觉得原因可能是task1中的这一句
GUI_ClearSCR();
没有注释掉,这样来个任务来回切换,显示的时间是非常短的,最后总是被清屏了。
不知道是不是这个原因,你试下看看。
-
先把代码贴上,先说一下啊,写代码起码缩进吧。
你加上蜂鸣器后的代码是不是这样的?
int main (void)
{
GUI_Initialize(); // 初始化液晶
GUI_SetColor(WHITE, NAVY); // 设置液晶背景和显示字颜色
OSInit ();
OSTaskCreate (Task0,(void *)0, &TaskStk0[TaskStkLengh - 1], 2);
OSStart ();
return 0;
}
void Task0(void *pdata)
{
pdata = pdata;
TargetInit ();
// PINSEL0 = 0x00000000; // 设置P0口管脚连接GPIO
// IO0DIR = BEEP; // 设置蜂鸣器控制口为输出
// IO0SET = BEEP;
// IO2DIR = LED_IOCON; // 设置LED1--LED4的控制口为输出
// LED_OFF();
// 建立任务1(用于蜂鸣器控制)
OSTaskCreate (Task1,(void *)0, &TaskStk1[TaskStkLengh - 1], 3);
while (1)
{
GUI_ClearSCR();
HzDisp2(); //显示汉字“欢迎光临”
// DelayNS(50);
// IO0CLR = BEEP; // 控制蜂鸣器响
OSTimeDly(OS_TICKS_PER_SEC);
// IO0SET = BEEP;
}
}
void Task1(void *pdata)
{
pdata = pdata;
while (1)
{
OSTimeDly(OS_TICKS_PER_SEC*3); // 延时3S
GUI_ClearSCR();
//HzDisp();//显示汉字“请稍等”
// DelayNS(50);
IO0CLR = BEEP; // 控制蜂鸣器响
OSTimeDly(OS_TICKS_PER_SEC);
IO0SET = BEEP;
OSTimeDly(OS_TICKS_PER_SEC); // 延时1S
}
}
-
os_cpu.h 不存在,查看下这个文件的路径啥的对不对,我也没用过这个例子,不知道是不是这个原因。
-
既然是全局变量那就应该在函数外部定义啊,没看明白你到底是什么意思。
-
我也在用啊。
-
感谢分享