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

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
) a1 W' P% F% s3 N- n* e; U消费者wait,生产者release。这有什么问题吗?这个100只是内部的一个计数,是不是能够wait到,是看是否能 ...
" V& B8 L; k2 t6 _# i% ?% j& r
你没试 过吧  初始化为100的sem  不release 也可以被wait 100次
% e7 d: J/ x0 c5 R4 {# ~7 ?
6 i# `/ t" K6 a) ]) ?# \+ s% l2 Y不相信 你试试看
lovewyufeng 回答时间:2015-1-23 12:56:23
我是东哥 发表于 2015-1-23 12:31
' R: |* K8 I4 k消费者wait,生产者release。这有什么问题吗?这个100只是内部的一个计数,是不是能够wait到,是看是否能 ...

% P: |& ?+ e8 M事实上  只要这个计数不为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
0 n# Q% J9 M8 J8 B9 t0 m  \
兄弟这是 灌水么~~~
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 编辑
( P7 ~* E/ X- J* d' \" K3 R
lovewyufeng 发表于 2015-1-23 12:56/ v( X6 G- o' @- @
事实上  只要这个计数不为0 都能被 wait 到

9 b1 n/ L1 q) N5 \1 |+ {不好意思,确实被代码的名称误导了,以前用的基本上只用二值的semphore或者直接用queue了。% Z0 e% o* H  [; j( t& I* z9 O
仔细看了一下内部的实现,确实我说错了。
. Z' Y: k! \0 J" {( I在init_counter和max_counter一样的情况下,确实整个逻辑是要按照资源池来解释的,也就是确实生产者take(这个take代表获取空闲资源才能生产),消费者release(这个代表空闲资源返回)。我觉得这种情况semphore更像一个可重入的锁,处理线程拿走资源池后,直接处理完后再归还,像是个recursive mutex。
; c' _% \. Q* f9 T" A& p. f; q前面说的那个问题,直接用queue可能会更好。另外,今天试了一下最新的stm32cubemx和固件版本,代码已经改了,#if (configUSE_COUNTING_SEMAPHORES == 1 )        2 |4 b4 G% G, B7 l/ ^% j
  return xSemaphoreCreateCounting(count, 0);9 R0 H, T8 G! S% }* v
#else0 M' g& L) Q) H
  return NULL;
5 N& M, F7 I/ O! A, b8 z$ ^# E#endif, A9 \& l7 Y" W% y
}
$ {- |, v3 F1 E- t! H
4 I5 G, a' {1 c# }! ~  `% e/ g, Z9 B5 ^7 }* a; j
1 T/ ^' v) L$ g3 f: H& j

3 q1 o5 w1 n" ~+ b- n7 x
拼命三郎 回答时间: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
0 d1 F. w' A/ n" E5 G2 c不好意思,确实被代码的名称误导了,以前用的基本上只用二值的semphore或者直接用queue了。
0 g( R. G6 J+ |仔细看了一下 ...
8 o7 F+ C2 D, O2 C" d+ i6 O  J: {
看来 ST 也意识到这个BUG了

所属标签

关于
我们是谁
投资者关系
意法半导体可持续发展举措
创新与技术
意法半导体官网
联系我们
联系ST分支机构
寻找销售人员和分销渠道
社区
媒体中心
活动与培训
隐私策略
隐私策略
Cookies管理
行使您的权利
官方最新发布
人形机器人运动控制、感知与智能配电
半导体创新技术与应用方向
EE架构与软件定义汽车
12V/48V 汽车智能配电(SPD)
区域控制单元(ZCU)与分区架构
关注我们
st-img 微信公众号
st-img 手机版