ucos-ii学习笔记——首个多任务程序的创建
#define
//定义两个任务的任务堆栈,每一个任务有一个任务堆栈
OS_STK
OS_STK
INT8U
//声明两个任务函数
void
void
void
{
char
}
void
{
char
#if
#endif
PC_DispChar(x,y,*(char*)pdata,DISP_BGND_BLACK+DISP_FGND_WHITE);
x+=1;
}
void
{
#if
#endif
pdata=pdata;
for
{
PC_DispChar(x,y,*(char*)pdata,DISP_BGND_BLACK+DISP_FGND_WHITE);
x+=1;
}
//因为MyTask的等待时间为3s,YouTask的等待时间为1s,所以MyTask每执行一次,YouTask执行3次
//程序运行的效果为每显示一个L,显示3个C
//因为在MyTask显示完L后就交出了cpu,所以YouTask会立马执行,显示一个C,所以看到的效果相当于L和第一个C同时显示
//以后两个C的显示间隔1s
//按时,分,秒,毫秒延时函数OSTimeDlyHMSM();实质上是调用了任务节拍延时函数,OSTimeDly();
//延时函数OSTimeDly();以时钟节拍数进行延时,在函数中,调用了OSSched();任务调度。
//因为在函数中,首先从就绪表中删除当前任务,最后再进行任务的调度。所以当任务调用了延迟函数后,那么该
//任务就处于等待状态了,交出了cpu的使用权。而最后的任务调度就会执行下一个优先级最高的就绪任务。
//详细请参见P145
ucos-ii学习笔记多任务程 相关文章:
- Windows CE 进程、线程和内存管理(11-09)
- RedHatLinux新手入门教程(5)(11-12)
- uClinux介绍(11-09)
- openwebmailV1.60安装教学(11-12)
- Linux嵌入式系统开发平台选型探讨(11-09)
- Windows CE 进程、线程和内存管理(二)(11-09)