打印
[信息]

二值信号量--FreeRtos

[复制链接]
1678|15
手机看帖
扫描二维码
随时随地手机跟帖
跳转到指定楼层
楼主
Larm1|  楼主 | 2016-1-15 14:32 | 只看该作者 回帖奖励 |倒序浏览 |阅读模式
      最近在捣腾FreeRtos操作系统,整体感觉还是蛮简单的,但是有个现象不知道是否正确:

     使用
     vSemaphoreCreateBinary(SemaTest);     ////创建 SemaTest二值信号量;

     在中断中触发信号量:
      void xxxHandle(void)
      {
        ....
        xSemaphoreGiveFromISR(semphr);
        ....
      }

      在任务中调用信号量:
      void TaskTest(void)
      {
          for(; ;)
          {
           ....
           xSemaphoreTake(semphr, portMAX_DELAY );
           ....
          }
      }

      现象:在程序没有进中断时,任务TaskTest也可以成果获取到一次信号量。

      跟踪了代码,发现二值信号量创建后初始值默认为1,所以可以成功获取到一次。
      不像uCOSIII中,在创建信号量时可以同时给定初始值。
沙发
Larm1|  楼主 | 2016-1-18 22:17 | 只看该作者
菜鸟学习中,请多多指教…

使用特权

评论回复
板凳
大果仁儿| | 2016-1-25 15:49 | 只看该作者
菜鸟表示看不懂。。。

使用特权

评论回复
地板
Brand2| | 2016-1-25 21:48 | 只看该作者
FreeRtos操作系统和ucos比,谁好用些,更容易掌握

使用特权

评论回复
5
Bermanrep| | 2016-1-31 16:07 | 只看该作者
这个信号量和ucos ii中的信号量有什么区别啊

使用特权

评论回复
6
Larm1|  楼主 | 2016-3-16 17:21 | 只看该作者
Brand2 发表于 2016-1-25 21:48
FreeRtos操作系统和ucos比,谁好用些,更容易掌握

个人认为前者比较简单,也比较容易掌握些,因为任务间的同步机制比较少一点...

使用特权

评论回复
7
Larm1|  楼主 | 2016-3-16 17:23 | 只看该作者
Bermanrep 发表于 2016-1-31 16:07
这个信号量和ucos ii中的信号量有什么区别啊

FreeRtos中的信号量其实质是队里, 即由队里简化而来...

使用特权

评论回复
8
zcw9911| | 2016-3-16 17:51 | 只看该作者
初始化信号量的时候xSemaphoreTake信号量一次即可。

使用特权

评论回复
9
Larm1|  楼主 | 2016-3-24 17:31 | 只看该作者
对,智能这样了...

使用特权

评论回复
10
dsyq| | 2017-7-12 16:22 | 只看该作者
我就想它初始化后默认为0啊!

使用特权

评论回复
11
734774645| | 2017-7-12 18:10 | 只看该作者
没玩过这个概念。

使用特权

评论回复
12
东方教主| | 2017-7-14 08:56 | 只看该作者
已经用在一个项目中了,就用了队列和互斥

使用特权

评论回复
13
Larm1|  楼主 | 2017-7-14 18:25 | 只看该作者
东方教主 发表于 2017-7-14 08:56
已经用在一个项目中了,就用了队列和互斥

使用特权

评论回复
14
huangcunxiake| | 2017-7-15 22:33 | 只看该作者
跑系统浪费硬件,追求超低功耗就要裸奔

使用特权

评论回复
15
Larm1|  楼主 | 2017-7-16 10:06 | 只看该作者
huangcunxiake 发表于 2017-7-15 22:33
跑系统浪费硬件,追求超低功耗就要裸奔

最近在搞低功耗,也会是这个感觉...

使用特权

评论回复
16
LMCH| | 2017-7-16 21:40 | 只看该作者
计数信号量可以设初值

使用特权

评论回复
发新帖 我要提问
您需要登录后才可以回帖 登录 | 注册

本版积分规则

个人签名:大爱无疆

53

主题

389

帖子

0

粉丝