硬汉嵌入式论坛

 找回密码
 立即注册
查看: 2541|回复: 6
收起左侧

[FreeRTOS] 二值信号量创建后会自动给出一次标志,是为什么?

[复制链接]

28

主题

73

回帖

162

积分

初级会员

积分
162
发表于 2017-9-13 17:09:13 | 显示全部楼层 |阅读模式
最近做一个小项目,发现每次上电所有和二值信号量有关的都会先执行一次,跟踪创建二值信号量的函数发现,在创建的时候就给了一次标志,代码如下:
  #define vSemaphoreCreateBinary( xSemaphore )                       \
{                                 \
  ( xSemaphore ) = xQueueGenericCreate( ( UBaseType_t ) 1, semSEMAPHORE_QUEUE_ITEM_LENGTH, queueQUEUE_TYPE_BINARY_SEMAPHORE ); \
  if( ( xSemaphore ) != NULL )                         \
  {                                \
   ( void ) xSemaphoreGive( ( xSemaphore ) );                     \
  }                              \
}
这有什么作用吗?屏蔽掉if那段会有什么影响吗?
回复

使用道具 举报

1万

主题

6万

回帖

10万

积分

管理员

Rank: 9Rank: 9Rank: 9

积分
107023
QQ
发表于 2017-9-14 00:38:15 | 显示全部楼层
首先,函数vSemaphoreCreateBinary()已经是老版本里面的API了,现在叫xSemaphoreCreateBinary。

代码如下:
#define xSemaphoreCreateBinary() xQueueGenericCreate( ( UBaseType_t ) 1, semSEMAPHORE_QUEUE_ITEM_LENGTH, queueQUEUE_TYPE_BINARY_SEMAPHORE )

初级后,初始的计数值是0.
回复

使用道具 举报

28

主题

73

回帖

162

积分

初级会员

积分
162
 楼主| 发表于 2017-9-14 08:47:24 | 显示全部楼层

回 eric2013 的帖子

eric2013:首先,函数vSemaphoreCreateBinary()已经是老版本里面的API了,现在叫xSemaphoreCreateBinary。

代码如下:
#define xSemaphoreCreateBinary() xQueueGenericCreate( ( UBaseType_t ) 1, semSEMAPHORE_QUEUE_ITEM_LENGTH, queueQUEUE_TYPE_BINARY_SEMAPHORE )

....... (2017-09-14 00:38)
奥,这是最新的吗?我用的是8.2.3,
回复

使用道具 举报

1万

主题

6万

回帖

10万

积分

管理员

Rank: 9Rank: 9Rank: 9

积分
107023
QQ
发表于 2017-9-15 10:13:03 | 显示全部楼层

回 月霜寒 的帖子

月霜寒:奥,这是最新的吗?我用的是8.2.3, (2017-09-14 08:47) 
使用函数xSemaphoreCreateBinary即可
回复

使用道具 举报

28

主题

73

回帖

162

积分

初级会员

积分
162
 楼主| 发表于 2017-9-16 09:06:48 | 显示全部楼层

回 eric2013 的帖子

eric2013:使用函数xSemaphoreCreateBinary即可 (2017-09-15 10:13)
好的,谢谢
回复

使用道具 举报

28

主题

73

回帖

162

积分

初级会员

积分
162
 楼主| 发表于 2017-9-16 09:15:16 | 显示全部楼层

回 eric2013 的帖子

eric2013:使用函数xSemaphoreCreateBinary即可 (2017-09-15 10:13)
还有一个问题,这样创建,没有句柄,我要是连续创建几个,怎么区分呢
回复

使用道具 举报

28

主题

73

回帖

162

积分

初级会员

积分
162
 楼主| 发表于 2017-9-16 09:17:01 | 显示全部楼层

回 eric2013 的帖子

eric2013:使用函数xSemaphoreCreateBinary即可 (2017-09-15 10:13)
看了看手册,知道怎么用了,嘿嘿
回复

使用道具 举报

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

本版积分规则

QQ|小黑屋|Archiver|手机版|硬汉嵌入式论坛

GMT+8, 2024-5-14 10:18 , Processed in 0.188448 second(s), 25 queries .

Powered by Discuz! X3.4 Licensed

Copyright © 2001-2023, Tencent Cloud.

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