在u cos系统中,OSTimeDly和***pend都对任务有状态改变的作用,那么这两个函数到底有什么不同呢?
例程分析:
static void App_TaskStart(void* p_arg)//优先级为2
{
static st t;
INT8U error;
(void) p_arg;
OS_CPU_SysTickInit(); /* Initialize the SysTick. */
for(;;)
{
OSQPend(com1,0,&error);
LED_LED1_ON();
}
static void task1(void* p_arg) //优先级为3
{
static st t;
t.a=2;
// INT8U error;
(void) p_arg;
for(;;)
{
OSQPost(com1,&a

本文分析了在uCOS操作系统中,OSTimeDly函数和pend()函数如何影响任务状态。当App_TaskStart任务启动时,由于队列为空,它挂起等待消息。在task1中,消息被发送到队列,但OSTimeDlyHMSM函数使task1进入休眠,不再在就绪表中。task2虽然尝试获取队列消息,但由于OSQPend挂起,无法执行。总结:OSTimeDly会使任务从就绪表中移除,而挂起任务只是进入休眠状态,保持在就绪表中。
842

被折叠的 条评论
为什么被折叠?



