ucos---信号量

(1)使能

os_cfg.h头文件中     #define OS_SEM_EN                1

 

(2)三个重要函数

 

《1》OS_EVENT     *OSSemCreate           (INT16U           cnt);

       参数:cnt表示信号量     ;  返回值:可看作该信号量的句柄

      (当cnt==1的时候,表示互斥操作)

 

《2》INT8U  OSSemPost (OS_EVENT *pevent);

       参数:信号量句柄        ;   返回值:表示错误码返回  OS_ERR_NONE(0)表示成功

 

《3》void  OSSemPend (OS_EVENT *pevent, INT16U timeout, INT8U *perr);

        参数:1.信号量句柄; 2.等待时间(0表示无限等); 3.表示错误码返回  OS_ERR_NONE(0)表示成功

 

OSSemPost ()可以有任务或中断服务子程序调用

OSSemPend () 只能由任务程序调用

 

 

任务要得到信号量的问题。

       想得到信号量的任务,必须执行等待操作(pend)。如果信号量有效(非0),则信号量减1,任务得以继续运行。如果信号量无效,则等待信号量的任务就被列入等待信号量的任务表中。多少内核允许定义等待超时,当等待时间超过了设定值,该信号量还是无效,则等待该信号量的任务进入就绪态,准备运行,并返回出错代码(等待超时错误)。

任务对信号量的释放问题。

      任务执行发信号(post)操作来释放信号量。如果没有任务等待信号量,那么信号量的值仅是简单的加1(则信号量大于0,有效);如果有任务等待该信号量,那么就会有另一个任务进入就绪态,信号量的值就不加1。

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值