freeRTOS中文实用教程3--中断管理之计数信号量
2024-09-27 14:49:04
1.前言
在中断不频繁的系统中,使用二值信号量没有问题,但是中断频繁发生时,则会有中断丢失的问题。
因为中断发生时延迟任务执行,延迟任务执行的过程中,如果又来了两次中断,则只会处理第一次,第二次将会丢失。
为此引入多值信号量来处理这个问题。
2.二值信号量和多值信号量的原理图
二值信号量的处理过程如下图所示:
多值信号量的原理图:
3.计数信号量的典型用法
3.1 事件计数
事件发生时信号量计数值加1,延迟处理任务每处理一个任务信号量计数值减1,信号量的计数值是已发生的事件数与已处理的事件数之间的差值。
用于事件计数的信号量初始值为0.
3.2 资源管理
信号量的计数值表示可用资源的数目。
要使用资源,必须先获取信号量,使信号量计数值减1;
任务完成则释放信号量,将信号量计数值加1;
信号量计数值为0表示没有可用资源;
用于资源管理的信号量,创建时计数值被初始化为可用资源总数。
4.主要API
API | 说明 | 参数及返回值 |
xSemaphoreCreateCounting() | 创建计数信号量,FreeRTOS 中所有种类的信号量句柄都由声明为 xSemaphoreHandle 类型的变量 保存。 |
uxMaxCount 最大计数值 uxInitialCount 信号量的初始计数值 返回值 如果返回 NULL 值,表示堆上内存空间不足,所以 FreeRTOS 无法 |
最新文章
- Windows server用好windows server backup,发挥个人电脑该有的系统还原功能
- C语言习题(结构)
- java 中变量的存储与引用
- iOS的内购
- Spark大数据处理技术
- 修复南尼U盘
- Swift - 41 - swift1.2新特性(1)
- [LeetCode]题解(python):126-Word Ladder II
- Qt 操作 pdf 文件
- PAT (Advanced Level) 1052. Linked List Sorting (25)
- jQuery监听事件经典例子
- Android使用属性动画ValueAnimator动态改变SurfaceView的背景颜色
- linux 高级字符设备驱动 ioctl操作介绍 例程分析实现【转】
- SmokePing介绍
- 1005 继续(3n+1)猜想 (25 分)
- Jmeter当获取正则表达式匹配数字为负数时获取所有匹配的值
- CentOS7系统64位下搭建Python3.6环境及相关细节工具部署文章收集
- jQuery 的运行机制(How jQuery Works)
- 谜一样的jquery之$选择器
- scrapy之 downloader middleware
热门文章
- POJ P3352 Road Construction 解题报告
- 洛谷 P2680 运输计划 解题报告
- 洛谷 P1053 篝火晚会 解题报告
- 支持向量机(SVM)的推导(线性SVM、软间隔SVM、Kernel Trick)
- php 防止sql注入的简单方法
- InfluxDB、grafana、collect部署监控(centos6.8)
- Xen的入门到放弃
- H3C常用命令详解
- 设计模式---组件协作模式之模板方法模式(Tempalte Method)
- MySQL记录-Lost Connect MySQL Server during query解决方案