侧边栏壁纸
博主头像
thinkTV博主等级

喜爱动漫的二刺螈一枚,摩托车云爱好者(快要有车了)。 懂一点技术的在读生物医学工程研究生( •̀ ω •́ )✧,多多指教。

  • 累计撰写 127 篇文章
  • 累计创建 17 个标签
  • 累计收到 0 条评论

目 录CONTENT

文章目录

UCOSIII 任务内嵌信号量/队列

thinkTV
2023-07-24 / 0 评论 / 0 点赞 / 125 阅读 / 495 字 / 正在检测是否收录...

1. 任务信号量简介

任务内嵌信号量本质上就是一个信号量,任务信号量是分配于每一个任务的任务控制块结构体中的, 因此每一个任务都有独自的任务内嵌信号量

注意:任务内嵌信号量只能被该任务获取,但是可以由其他任务或者中断释放

图片-1690167956662

2. 任务信号量相关API函数介绍

图片-1690168854229

注意:

  • 释放任务信号量API函数可以用于任务和中断服务函数中
  • 接收任务信号量API函数只能用在任务中

2.1 获取任务内嵌信号量函数

OS_SEM_CTR OSTaskSemPend(                OS_TICK 	timeout,
					 OS_OPT 	opt,
					 CPU_TS* 	p_ts,
					 OS_ERR* 	p_err ) 

图片-1690168966326

图片-1690168972071

2.2 释放任务内嵌信号量函数

OS_SEM_CTR OSTaskSemPost( OS_TCB* 	p_tcb,
					 OS_OPT 	opt,
					 OS_ERR* 	p_err )  

图片-1690182783555

图片-1690182793429

2.3 强制设置任务内嵌信号量的资源数函数

OS_SEM_CTR OSTaskSemSet( OS_TCB* 		p_tcb,
					OS_SEM_CTR 	cnt;
					OS_ERR* 		p_err ) 

图片-1690182823150

图片-1690182826267

3. 任务队列简介

任务内嵌消息队列本质上就是一个消息队列,任务队列是分配于每一个任务的任务控制块结构体中的, 因此每一个任务都有独自的任务内嵌消息队列

注意:任务内嵌消息队列只能被该任务获取,但是可以由其他任务或者中断释放

图片-1690183364067

4. 任务队列相关API函数介绍

图片-1690183401687

注意:

  • 发送任务消息队列API函数可以用于任务和中断服务函数中
  • 接收任务消息队列API函数只能用在任务中

4.1 获取任务内嵌消息队列中的消息

void *OSTaskQPend(	OS_TICK 		timeout,
				OS_OPT 		opt,
				OS_MSG_SIZE* 	p_msg_size,
				CPU_TS* 		p_ts,
				OS_ERR*		p_err ) 

图片-1690185458902

图片-1690185464761

4.2 发送消息到任务内嵌消息队列

void OSTaskQPost( 	OS_TCB* 		p_tcb,
				void* 		p_void,
				OS_MSG_SIZE 	msg_size,
				OS_OPT 		opt,
				OS_ERR* 		p_err ) 

图片-1690185493257

0

评论区