理解:
任务信号量、任务消息队列是跟随任务创建而来的,不需要额外创建,并且他和多值信号量、消息队列有一些不同,多值信号量他们是建立于1对多得关系,而我们的任务信号量还有任务消息队列是建立在多对一或者一对一的关系下的,这样可以更好的控制任务的执行顺序。
一、任务信号量发布、等待
OSTaskSemPost ((OS_TCB *)&Task_2_TCB,
(OS_OPT )OS_OPT_POST_NONE,
(OS_ERR *)&err);
/*
参数:
1、就是你要发给哪个任务
2、发完之后是否进行调度,一般就用默认
3、错误值
*/
OSTaskSemPend ((OS_TICK )0,
(OS_OPT )OS_OPT_PEND_BLOCKING,
(CPU_TS *)0,
(OS_ERR *)&err);
/*
参数:
1、超时选项
2、是否阻塞
3、是否拿哪个时间戳
4、错误值
*/
二、任务消息队列的发布、等待
OSTaskQPost ((OS_TCB *)&Task_2_TCB,
(void *)"i love you rick",
(OS_MSG_SIZE )sizeof("i love you rick"),
(OS_OPT )OS_OPT_POST_FIFO,
(OS_ERR *)&err);
/*
参数:
1、发布给哪个任务
2、发送的消息体,可以是结构体啥都行,因为这里是void * 类型
3、发送的消息大小
4、发送的模式
5、错误值
*/
p_Msg = OSTaskQPend ((OS_TICK )0,
(OS_OPT )OS_OPT_PEND_BLOCKING,
(OS_MSG_SIZE *)&msg_size,
(CPU_TS *)0,
(OS_ERR *)&err);
/*
参数:
1、超时值
2、是否是阻塞等待
3、输出参数,消息的大小
4、时间戳要不要
5、错误值
*/
本文内容由网友自发贡献,版权归原作者所有,本站不承担相应法律责任。如您发现有涉嫌抄袭侵权的内容,请联系:hwhale#tublm.com(使用前将#替换为@)