当前位置: 首页 > java >正文

1分钟理解FreeRtos中的信号量知识

一、信号量本质

可以理解为一个计数器,任务每完成某个操作或者某个操作就绪的时候就可以给计数器自加,目的是告诉其他打算进一步操作的任务可以进行了(阻塞状态唤醒作用)。

二、作用与使用

1.作用

实现任务之间的同步

2.使用

创建信号量

二进制信号量计数器信号量
动态创建xSemaphoreCreateBinary
计数值初始值为 0
xSemaphoreCreateCounting
vSemaphoreCreateBinary (过时了)
计数值初始值为 1
静态创建xSemaphoreCreateBinaryStaticxSemaphoreCreateCountingStatic

操作信号量

在任务中使用在 ISR 中使用
givexSemaphoreGivexSemaphoreGiveFromISR
takexSemaphoreTakexSemaphoreTakeFromISR

3.示例

xSemCalc = xSemaphoreCreateCounting(10, 0);static SemaphoreHandle_t xSemCalc;void Task1Function(void * param)
{volatile int i = 0;while (1){for (i = 0; i < 10000000; i++)sum++;//printf("1");xSemaphoreGive(xSemCalc);vTaskDelete(NULL);}
}void Task2Function(void * param)
{while (1){xSemaphoreTake(xSemCalc, portMAX_DELAY);printf("sum = %d\r\n", sum);}
}

http://www.xdnf.cn/news/14045.html

相关文章:

  • LeetCode - 387. 字符串中的第一个唯一字符
  • 一个简单的torch-cuda demo
  • Acrobat 首选项配置:从注册表到锁定机制
  • 【MPC】模型预测控制笔记 (2):约束MPC
  • C语言预处理命令详解
  • 第9章 表达式和运算符 笔记 待完善
  • 如何运营一个专业的体育比分网站
  • 2025年06月13日Github流行趋势
  • 【Photoshop】使用路径和形状制作印章
  • 基于51单片机的电机控制角度proteus仿真
  • 【IEEE/EI/Scopus检索】2025年第五届机器学习与大数据管理国际会议 (MLBDM 2025)
  • Streamlit 笔记
  • Google Drive·实现共享文件本地访问与编辑
  • sdk添加包,更新文件系统--万象奥科RK3506
  • 基于数字孪生的风光储一体化园区智能化管理解决方案
  • C++进阶—C++中的继承
  • 在云算力上使用Nginx对Gradio外链进行加速的方法
  • 趣解TensorFlow之入门篇
  • 家政维修平台实战25:工人接单
  • Could not initialize Logback logging from classpath:logback-spring.xml
  • PostgreSQL作为向量数据库
  • 论索引影响性能的一面④ 索引失踪之谜【上】
  • docker部署DNS服务并带有图形界面管理——筑梦之路
  • 【碎碎念】60秒! 卡牌游戏 60 Seconds! [特殊字符] 桌游版《求生60秒》
  • 人工智能100问☞第47问:为啥AI需要“反向传播”?
  • Spring Bean
  • aardio 继承与多态
  • 智能出入库管理系统:自动化管控平台
  • 我是如何用 Agent 编程的
  • Day01_C数据结构