物联网操作系统学习笔记——系统信号量

本文详细探讨了物联网操作系统中的信号量概念,包括FreeRTOS的二值和计数信号量工作原理,以及如何在任务和中断中进行信号量的给予和获取。通过实验操作,展示了如何用信号量实现停车位出入功能,从而说明了信号量在资源管理中的作用。
摘要由CSDN通过智能技术生成

信号量概念及其应用

信号量定义:信号量(semaphore),多任务环境下使用的一种设施,负责协调多个任务,以保证任务能够正确,合理的使用公共资源。

在这里插入图片描述
FreeRTOS信号量介绍
在这里插入图片描述
FreeRTOS信号量工作原理
二值信号量工作原理
在这里插入图片描述
计数信号量工作原理
在这里插入图片描述
二值信号量函数应用
功能需求
在这里插入图片描述

API详解
xSemaphoreCreateBinary()
在这里插入图片描述
xSemaphoreGive()
在这里插入图片描述
xSemaphoreGiveFromISR()
在这里插入图片描述
xSemaphoreTake()
在这里插入图片描述
xSemaphoreTakeFromISR()
在这里插入图片描述
功能实现:
业务流程
在这里插入图片描述
创建信号量

  osSemaphoreDef(CpuPrintfBinarySem);
  CpuPrintfBinarySemHandle = osSemaphoreCreate(osSemaphore(CpuPrintfBinarySem), 1);

在中断中释放信号量

void HAL_GPIO_EXTI_Callback(uint16_t GPIO_Pin){
   


				xSemaphoreGiveFromISR(CpuPrintfBinarySemHandle,	NULL);
			
			}

在任务中获取信号量

	if(xSemaphoreTake(CpuPrintfBinarySemHandle,portMAX_DELAY) == pdPASS)

计数信号量函数应用

实验操作:
功能需求
1、修改按键功能,模拟停车位出入功能
2、当按键K3按下获取车位
3、当按键K4按下释放车位

API详解:
xSemaphoreCreateCounting()
在这里插入图片描述
uxSemaphoreGetCount()
在这里插入图片描述
功能实现
在这里插入图片描述
步骤,配置按键
将PF11-设置为GPIO中断输入模式,上下沿触发
在这里插入图片描述
使能按键中断
在这里插入图片描述

使能USE_COUNTING_SEMAPHOR

评论 1
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值