OpenEdv-开源电子网

 找回密码
 立即注册
正点原子全套STM32/Linux/FPGA开发资料,上千讲STM32视频教程免费下载...
查看: 6686|回复: 4

ucosIII中信号量等待 OSSemPend

[复制链接]

54

主题

105

帖子

0

精华

中级会员

Rank: 3Rank: 3

积分
341
金钱
341
注册时间
2014-10-30
在线时间
0 小时
发表于 2015-1-16 22:11:57 | 显示全部楼层 |阅读模式
5金钱
OS_SEM_CTR    OSSemPend                 (OS_SEM                *p_sem,
                                         OS_TICK                timeout,
                                         OS_OPT                 opt,
                                         CPU_TS                *p_ts,
                                         OS_ERR                *p_err);

#if OS_CFG_SEM_PEND_ABORT_EN > 0u
OS_OBJ_QTY    OSSemPendAbort            (OS_SEM                *p_sem,
                                         OS_OPT                 opt,
                                         OS_ERR                *p_err);
#endif

OS_SEM_CTR    OSSemPost                 (OS_SEM                *p_sem,
                                         OS_OPT                 opt,
                                         OS_ERR                *p_err);

#if OS_CFG_SEM_SET_EN > 0u
void          OSSemSet                  (OS_SEM                *p_sem,
                                         OS_SEM_CTR             cnt,
                                         OS_ERR                *p_err);
#endif

/* ------------------------------------------------ INTERNAL FUNCTIONS ---------------------------------------------- */

void          OS_SemClr                 (OS_SEM                *p_sem);

#if OS_CFG_DBG_EN > 0u
void          OS_SemDbgListAdd          (OS_SEM                *p_sem);

void          OS_SemDbgListRemove       (OS_SEM                *p_sem);
#endif

void          OS_SemInit                (OS_ERR                *p_err);

OS_SEM_CTR    OS_SemPost                (OS_SEM                *p_sem,
                                         OS_OPT                 opt,
                                         CPU_TS                 ts,
                                         OS_ERR                *p_err);
#endif
ucosIII中怎样用 OSSemPend 这个函数,怎样填它的参数?

最佳答案

查看完整内容[请看2#楼]

当一个任务需要独占式的访问某个特定的系统资源时,需要与其他任务或中断服务程序同步,或者需要等待某个事件的发生,应该调用函数OSSemPend(),函数原型如下: OS_SEM_CTR  OSSemPend ( OS_SEM        *p_sem,                            &n ...
正点原子逻辑分析仪DL16劲爆上市
回复

使用道具 举报

88

主题

7377

帖子

5

精华

资深版主

Rank: 8Rank: 8

积分
14980
金钱
14980
注册时间
2013-11-13
在线时间
1823 小时
发表于 2015-1-16 22:11:58 | 显示全部楼层

当一个任务需要独占式的访问某个特定的系统资源时,需要与其他任务或中断服务程序同步,或者需要等待某个事件的发生,应该调用函数OSSemPend(),函数原型如下:

OS_SEM_CTR  OSSemPend ( OS_SEM        *p_sem,

                            OS_TICK      timeout,

                            OS_OPT       opt,

                           CPU_TS        *p_ts,

                           OS_ERR        *p_err)

p_sem        指向一个信号量的指针。

timeout      指定等待信号量的超时时间(时钟节拍数),如果在指定时间内没有等到信号量则允许任务恢复执行。如果指定时间为0的话任务就会一直等待下去,直到等到信号量。

opt            用于设置是否使用阻塞模式,有下面两个选项。

                     OS_OPT_PEND_BLOCKING             指定信号量无效时,任务挂起以等待信号量。

                     OS_OPT_PEND_NON_BLOCKING   信号量无效时,任务直接返回。

p_ts           指向一个时间戳,用来记录接收到信号量的时刻,如果给这个参数赋值NULL 则说明用户没有要求时间戳。

p_err         保存调用本函数后返回的错误码。


再有,我们有STM32F4的UCOSIII的详细教程和例程,请在论坛里面搜索!
连接:http://www.openedv.com/posts/list/43643.htm
开往春天的手扶拖拉机
回复

使用道具 举报

54

主题

105

帖子

0

精华

中级会员

Rank: 3Rank: 3

积分
341
金钱
341
注册时间
2014-10-30
在线时间
0 小时
 楼主| 发表于 2015-1-17 11:12:53 | 显示全部楼层
回复【2楼】zuozhongkai:
---------------------------------
嗯,我现在用的芯片是 F103,就没有看F4的资料
回复

使用道具 举报

88

主题

7377

帖子

5

精华

资深版主

Rank: 8Rank: 8

积分
14980
金钱
14980
注册时间
2013-11-13
在线时间
1823 小时
发表于 2015-1-17 12:36:18 | 显示全部楼层
回复【3楼】秋枫暮霞惋红曲:
---------------------------------
除了移植不同之外,使用F1和F4完全一样的!
开往春天的手扶拖拉机
回复

使用道具 举报

54

主题

105

帖子

0

精华

中级会员

Rank: 3Rank: 3

积分
341
金钱
341
注册时间
2014-10-30
在线时间
0 小时
 楼主| 发表于 2015-1-17 13:30:09 | 显示全部楼层
回复【4楼】zuozhongkai:
---------------------------------
嗯,知道了
回复

使用道具 举报

您需要登录后才可以回帖 登录 | 立即注册

本版积分规则



关闭

原子哥极力推荐上一条 /2 下一条

正点原子公众号

QQ|手机版|OpenEdv-开源电子网 ( 粤ICP备12000418号-1 )

GMT+8, 2025-6-26 21:11

Powered by OpenEdv-开源电子网

© 2001-2030 OpenEdv-开源电子网

快速回复 返回顶部 返回列表