信号量概念及其应用
信号量定义:信号量(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