你的浏览器版本过低,可能导致网站不能正常访问!
为了你能正常使用网站功能,请使用这些浏览器。

STM32 如何快速创建 FREERTOS和RTX 工程  

[复制链接]
lovewyufeng 发布时间:2015-1-8 12:08
阅读主题, 点击返回1楼
收藏 14 评论97 发布时间:2015-1-8 12:08
97个回答
stary666 回答时间:2015-1-23 12:40:10
lovewyufeng 回答时间:2015-1-23 12:55:18
我是东哥 发表于 2015-1-23 12:31
消费者wait,生产者release。这有什么问题吗?这个100只是内部的一个计数,是不是能够wait到,是看是否能 ...

你没试 过吧  初始化为100的sem  不release 也可以被wait 100次

不相信 你试试看
lovewyufeng 回答时间:2015-1-23 12:56:23
我是东哥 发表于 2015-1-23 12:31
消费者wait,生产者release。这有什么问题吗?这个100只是内部的一个计数,是不是能够wait到,是看是否能 ...

事实上  只要这个计数不为0 都能被 wait 到
stary666 回答时间:2015-1-23 13:31:29
:)
stary666 回答时间:2015-1-23 13:32:23
stary666 回答时间:2015-1-23 13:32:40
wu1169668869 回答时间:2015-1-23 13:41:29
mark一下
lovewyufeng 回答时间:2015-1-23 13:41:57

兄弟这是 灌水么~~~
stary666 回答时间:2015-1-23 16:44:25
lkl0305 回答时间:2015-1-23 17:22:36
好东西,学习了
默默前行 回答时间:2015-1-23 17:32:02
很好,赞一个!
我是东哥 回答时间:2015-1-24 07:31:09
本帖最后由 我是东哥 于 2015-1-24 09:21 编辑
lovewyufeng 发表于 2015-1-23 12:56
事实上  只要这个计数不为0 都能被 wait 到

不好意思,确实被代码的名称误导了,以前用的基本上只用二值的semphore或者直接用queue了。
仔细看了一下内部的实现,确实我说错了。
在init_counter和max_counter一样的情况下,确实整个逻辑是要按照资源池来解释的,也就是确实生产者take(这个take代表获取空闲资源才能生产),消费者release(这个代表空闲资源返回)。我觉得这种情况semphore更像一个可重入的锁,处理线程拿走资源池后,直接处理完后再归还,像是个recursive mutex。
前面说的那个问题,直接用queue可能会更好。另外,今天试了一下最新的stm32cubemx和固件版本,代码已经改了,#if (configUSE_COUNTING_SEMAPHORES == 1 )        
  return xSemaphoreCreateCounting(count, 0);
#else
  return NULL;
#endif
}




拼命三郎 回答时间:2015-1-24 10:42:34
QQ截图20150124103212.jpg
wangweili1978 回答时间:2015-1-24 15:17:03
2.png
lovewyufeng 回答时间:2015-1-25 11:10:06
我是东哥 发表于 2015-1-24 07:31
不好意思,确实被代码的名称误导了,以前用的基本上只用二值的semphore或者直接用queue了。
仔细看了一下 ...

看来 ST 也意识到这个BUG了

所属标签

关于
我们是谁
投资者关系
意法半导体可持续发展举措
创新与技术
意法半导体官网
联系我们
联系ST分支机构
寻找销售人员和分销渠道
社区
媒体中心
活动与培训
隐私策略
隐私策略
Cookies管理
行使您的权利
官方最新发布
STM32N6 AI生态系统
STM32MCU,MPU高性能GUI
ST ACEPACK电源模块
意法半导体生物传感器
STM32Cube扩展软件包
关注我们
st-img 微信公众号
st-img 手机版