📄 ucos.txt
字号:
OSTimeDly(OS_TICKS_PER_SEC); // 延时1秒
TargetInit (); // 目标板初始化
OSTaskCreate (Task0,(void *)0, &TaskStk[TaskStkLengh - 1], 2);
OS_EVENT *PWMBox;
PWMBox = OSMboxCreate((void *)0); // 创建邮箱
msg = OSMboxPend(PWMBox, 0, &err); // 接收TaskKey1发来的消息
err = OSMboxPost(PWMBox, (void*)&PWMData); // 向TaskPWM发送消息
OSTaskSuspend(OS_PRIO_SELF); //挂起
OSTaskResume(3); //唤醒
OSTaskDel ( 3 ); 要删除的任务。OS_PRIO_SELF为删除自己
1) OSTaskCreate函数
这个函数应该至少再main函数内调用一次,在OSInit函数调用之后调用。作用就是创建一个任务。目前有四个参数,分别是任务的入口地址,任务的参数,任务堆栈的首地址和任务的优先级。调用本函数后,系统会首先从TCB空闲列表内申请一个空的TCB指针,然后将会根据用户给出参数初始化任务堆栈,并在内部的任务就绪表内标记该任务为就绪状态。最后返回,这样一个任务就创建成功了。
2) OSTaskSuspend函数
这个函数很简单,一看名字就该明白它的作用,它可以将指定的任务挂起。如果挂起的是当前任务的话,那么还会引发系统执行任务切换先导函数OSShed来进行一次任务切换。这个函数只有一个参数,那就是指定任务的优先级。那为什么是优先级呢?事实上在系统内部,优先级除了表示一个任务执行的先后次序外,还起着分别每一个任务的作用,换句话说,优先级也就是任务的ID。所以uC/OS-II不允许出现相同优先级的任务。
3) OSTaskResume函数
这个函数和上面的函数正好相反,它用于将指定的已经挂起的函数恢复成就绪状态。如果恢复任务的优先级高于当前任务,那么还为引发一次任务切换。其参数类似OSTaskSuspend函数,为指定任务的优先级。需要特别说明是,本函数并不要求和OSTaskSuspend函数成对使用。
⌨️ 快捷键说明
复制代码
Ctrl + C
搜索代码
Ctrl + F
全屏模式
F11
切换主题
Ctrl + Shift + D
显示快捷键
?
增大字号
Ctrl + =
减小字号
Ctrl + -