搜索
bottom↓
回复: 3

FreeRTOS “任务通知值” 的一些疑问

[复制链接]

出0入0汤圆

发表于 2019-5-24 11:56:12 | 显示全部楼层 |阅读模式
本帖最后由 eagle_avr 于 2019-5-24 14:09 编辑

在看正点原子的《STM32F407 FreeRTOS开发手册_V1.1》的任务通知部分时,用任务通知模拟计数型信号量,代码中一个任务扫描按键,发送任务通知;另一个任务获取该通知。
作者说在获取通知的任务里,获取到的任务通知值要减一才是当前任务的任务通知值。为何?以下是代码
  1. //释放计数型信号量任务函数
  2. void SemapGive_task(void *pvParameters)
  3. {
  4.         u8 key,i=0;
  5.         while(1)
  6.         {
  7.                 key=KEY_Scan(0); //扫描按键
  8.                 if(SemapTakeTask_Handler!=NULL)
  9.                 {
  10.                         switch(key)
  11.                         {
  12.                                 case WKUP_PRES:
  13.                                         xTaskNotifyGive(SemapTakeTask_Handler);//发送任务通知 (1)
  14.                                 break;
  15.                         }
  16.                 }
  17.                 i++;
  18.                 if(i==50)
  19.                 {
  20.                         i=0;
  21.                         LED0=!LED0;
  22.                 }
  23.                 vTaskDelay(10); //延时 10ms,也就是 10 个时钟节拍
  24.         }
  25. }

  26. //获取计数型信号量任务函数
  27. void SemapTake_task(void *pvParameters)
  28. {
  29.         u8 num;
  30.         uint32_t NotifyValue;
  31.         while(1)
  32.         {
  33.                 NotifyValue=ulTaskNotifyTake(pdFALSE,portMAX_DELAY);//获取任务通知 (2)
  34.                 num++;
  35.                 LCD_ShowxNum(166,111,NotifyValue-1,3,16,0); //显示当前任务通知值 (3)
  36.                 LCD_Fill(6,131,233,313,lcd_discolor[num%14]); //刷屏
  37.                 LED1=!LED1;
  38.                 vTaskDelay(1000); //延时 1s,也就是 1000 个时钟节拍
  39.         }
  40. }
复制代码


本帖子中包含更多资源

您需要 登录 才可以下载或查看,没有帐号?注册

x

阿莫论坛20周年了!感谢大家的支持与爱护!!

月入3000的是反美的。收入3万是亲美的。收入30万是移民美国的。收入300万是取得绿卡后回国,教唆那些3000来反美的!

出0入0汤圆

发表于 2019-5-24 18:53:13 | 显示全部楼层
你给的图片中不是已经说得很明白了吗?

本帖子中包含更多资源

您需要 登录 才可以下载或查看,没有帐号?注册

x

出105入79汤圆

发表于 2019-5-24 21:17:20 | 显示全部楼层
Semaphore 信号量,初衷是用来管理共享资源。比如一个厕所信号量,有5个茅坑。 进去一个人会减1. 只要这个信号量大于0,就代表有可用座位,允许访问厕所。

出0入0汤圆

发表于 2019-6-7 17:11:49 | 显示全部楼层
是要减去1的, 才是当前的通知值
回帖提示: 反政府言论将被立即封锁ID 在按“提交”前,请自问一下:我这样表达会给举报吗,会给自己惹麻烦吗? 另外:尽量不要使用Mark、顶等没有意义的回复。不得大量使用大字体和彩色字。【本论坛不允许直接上传手机拍摄图片,浪费大家下载带宽和论坛服务器空间,请压缩后(图片小于1兆)才上传。压缩方法可以在微信里面发给自己(不要勾选“原图),然后下载,就能得到压缩后的图片】。另外,手机版只能上传图片,要上传附件需要切换到电脑版(不需要使用电脑,手机上切换到电脑版就行,页面底部)。
您需要登录后才可以回帖 登录 | 注册

本版积分规则

手机版|Archiver|amobbs.com 阿莫电子技术论坛 ( 粤ICP备2022115958号, 版权所有:东莞阿莫电子贸易商行 创办于2004年 (公安交互式论坛备案:44190002001997 ) )

GMT+8, 2024-4-25 08:09

© Since 2004 www.amobbs.com, 原www.ourdev.cn, 原www.ouravr.com

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