UCOII信号量与消息邮箱

信号量

信号量是用来保护共享资源用的。表示共享资源的个数。共享资源有被用的,需要释放共享资源。
共享资源被占用一个,信号量的值会减1;共享资源被释放一个,信号量的值会加1。

OS_ EVENT        *OSSemCreate (INT160 cnt)

函数功能:创建一个信号量
函数形参:初始的时候给信号量一个数值。初始的时候有多少个共享资源。

函数返回值:OS_EVENT *:指针。事件控制块指针。
事件控制块:区分不同事件。

void        OSSempend (OS_EVENT        *pevent,
INT32U        timeout,
INT8U        *perr)
函数功能:等待一个信号量,接收一个信号量

函数形参:OS_EVENT *pevent:事件控制块指针。timeout:等待时间;根据心跳数目去等。为0的时候是死等。
INT8U        *perr: 保存错误结果的。

OS_ERR_NONE:成功

INT16U  OSSemAccept (OS_EVENT *pevent)
函数功能:查询一个信号量。不会产生任何延时。用在中断中。
函数返回值:为0的时候没有信号量产生:不为0有信号量产生。

INT8U   OSSemPost (OS_EVENT *pevent)

函数功能:发送一个信号量
函数形参:OS_EVENT *pevent:事件控制块指针。

函数返回值:OS_ERR_NONE:表示成功。

消息邮箱

        用于任务与任务之间交换数据的,例如:生活中,人与人之间发送邮件一样。消息邮箱中只能存放一则消息。消息的内容长短不限制。

OS_EVENT *OSMboxCreate (void *pmsg)

函数功能:创建一个消息邮箱
函数形参:void *pmsg:万能指针:初始给消息邮箱发送一则消息。

函数返回值:OS_EVENT*:事件控制块指针。

void *OSMboxPend (OS_EVENT  *pevent, INT32U timeout,INT8U *perr)
函数功能:接收一则消息
函数形参:OS_EVENT *pevent:事件控制块指针。
timeout:等特的时间长度:0的时候表示死等。perr:错误类型:OS_ERR_NONE:表示成功。
perr:错误类型: OS_ERR_NONE:表示成功。
函数返回值: void *:万能指针。这个时候返回的是消息内容的首地址。

void *OSMboxAccept (OS_EVENT *pevent)
函数功能:在中断中用来接收消息邮箱中的消息.。

INT8U OSMboxPost (OS_EVENT *pevent,void  *pmsg)
函数功能:发送一则消息
函数形参: OS_EVENT*pevent:事件控制块指针。void *pmsg:万能指针;

给消息邮箱发送一则消息。需要发送消息的首地址。

函数返回值:错误类型:OS_ERR_NONE:发送成功。

INT8U    OSMboxPostopt (OS_EVENT *pevent,void *pmsg,INT8U opt)
函数功能:发送一则消息
函数形参:INT8U
opt: OS_POST_OPT_NONE:发送给正在等待该消息邮箱的消息中的最高优先级任务

OS_POST_OPT_BROADCAsT:发送给所有在等待该消息邮箱的任务。
OS_POST_OPR_NO_SCHED:让该任务在发送消息的时候不会立刻产生任务调度。

  • 1
    点赞
  • 3
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值