这些小活动你都参加了吗?快来围观一下吧!>>
电子产品世界 » 论坛首页 » 综合技术 » 基础知识 » FreeRTOS二值信号量使用

共2条 1/1 1 跳转至

FreeRTOS二值信号量使用

工程师
2025-05-18 23:45:28     打赏

1、简介

二值信号量与我们常见的标记变量很类似,但RTOS的信号量相比标记变量管理更为规范一些,以下说明FreeRTOS二值信号量的创建与使用。

2CubeMX配置

image.png

创建BinarySem的信号量,Depleted表示信号量默认不释放

3、二值信号量测试代码

任务1用于获取信号量

/* USER CODE END Header_StartDefaultTask */
void StartDefaultTask(void *argument)
{
  /* USER CODE BEGIN StartDefaultTask */
	osStatus_t xReturn = osOK ;
  /* Infinite loop */
  for(;;)
  {
      
      xReturn = osSemaphoreAcquire(BinarySemHandle,
                        osWaitForever);//持续获取二值信号量
      if(osOK == xReturn){
         printf("二值信号量获取成功!\n");
   }
  }
  /* USER CODE END StartDefaultTask */
}

任务2用于释放信号量

/* USER CODE END Header_StartTask02 */
void StartTask02(void *argument)
{
  /* USER CODE BEGIN StartTask02 */
	osStatus_t xReturn = osOK ;
  /* Infinite loop */
  for(;;)
  {
    osDelay(1500);
		xReturn = osSemaphoreRelease( BinarySemHandle );//释放二值信号量
         if( xReturn == osOK )
            printf("二值信号量释放成功!\n");
         else
            printf("二值信号量释放失败!\n");
      }
  /* USER CODE END StartTask02 */
}

4、实验结果

f4050e0fbfdae10ca05cd1d15700c7a.png





关键词: RTOS信号量    

专家
2025-05-19 08:52:09     打赏
2楼

谢谢分享


共2条 1/1 1 跳转至

回复

匿名不能发帖!请先 [ 登陆 注册 ]