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

FreeRTOS-计数型信号量

实验目的

创建一个计数型信号量,按下 KEY1 则释放信号量,按下 KEY2 获取信号量。

实验代码

void StartTtaskGive(void const * argument)
{
  /* USER CODE BEGIN StartTtaskGive */
  /* Infinite loop */
  for(;;)
  {
      if(HAL_GPIO_ReadPin(GPIOA,GPIO_PIN_0) == GPIO_PIN_RESET)
      {
          osDelay(20);
          if(HAL_GPIO_ReadPin(GPIOA,GPIO_PIN_0) == GPIO_PIN_RESET)
          {
              if(xSemaphoreGive(myCountingSemHandle) == pdTRUE)
                  printf("计数型信号量放入成功\r\n");
              else
                  printf("计数型信号量放入失败\r\n");
          }
          while(HAL_GPIO_ReadPin(GPIOA,GPIO_PIN_0) == GPIO_PIN_RESET);
      }
    osDelay(10);
  }
  /* USER CODE END StartTtaskGive */
}

/* USER CODE BEGIN Header_StartTaskTake */
/**
* @brief Function implementing the taskTake thread.
* @param argument: Not used
* @retval None
*/
/* USER CODE END Header_StartTaskTake */
void StartTaskTake(void const * argument)
{
  /* USER CODE BEGIN StartTaskTake */
  /* Infinite loop */
  for(;;)
  {
    if(HAL_GPIO_ReadPin(GPIOA,GPIO_PIN_1) == GPIO_PIN_RESET)
      {
          osDelay(20);
          if(HAL_GPIO_ReadPin(GPIOA,GPIO_PIN_1) == GPIO_PIN_RESET)
          {
              if(xSemaphoreTake(myCountingSemHandle,0) == pdTRUE)
                  printf("计数型信号量获取成功\r\n");
              else
                  printf("计数型信号量获取失败\r\n");
          }
          while(HAL_GPIO_ReadPin(GPIOA,GPIO_PIN_1) == GPIO_PIN_RESET);
      }
    osDelay(10);
  }
  /* USER CODE END StartTaskTake */
}

实验结果

因为设置的长度是3,所以只能存放3位计数型信号量

http://www.dtcms.com/a/41143.html

相关文章:

  • 【OpenCV C++】图像增强:三种锐化方式,图像清晰度增强
  • TCP基本入门-简单认识一下什么是TCP
  • 关于“你对 Spring Cloud 的理解”
  • SpringBoot 中的 Redis 序列化
  • 【全栈开发】从0开始搭建一个图书管理系统【一】框架搭建
  • DeepSeek开源周 Day04:从DualPipe聊聊大模型分布式训练的并行策略
  • 微信小程序细小知识累计记录
  • 1. HTTP 数据请求
  • 期权帮|国内期权交易投资人做卖出期权价差交易收取的保证金是单边的还是双向的?
  • SpringBoot3—快速入门
  • 大白话css第三章实践与提升
  • seacmsv9报错注入管理员账号密码,order by 注入,如何解决 information_schema关键字被过滤掉了
  • AF3 _make_msa_df函数解读
  • Java语言Leetcode中常用的一些基础语法
  • 【洛谷贪心算法题】P1094纪念品分组
  • (八)Java-Collection
  • Ray生产集群配置
  • 图像处理基础(8):图像的灰度直方图、直方图均衡化、直方图规定化(匹配)
  • 目标检测YOLO实战应用案例100讲-面向无人机图像的小目标检测
  • 1.2.2 使用Maven方式构建Spring Boot项目
  • GPT1 与 GPT2 的异同
  • 数字内容体验案例分析的核心优势是什么?
  • 【Python pro】函数
  • 处理AAL的.nii文件:python获取AAL的各个区域的质心坐标
  • Go红队开发—语法补充
  • 同价位usb网卡与pcie网卡网速差距实测 热点测试
  • JavaScript 简单类型与复杂类型-复杂类型的内存分配
  • 智慧隧道与智慧城市融合发展——塔能物联运维的持之以恒
  • 同步fifo和异步fifo
  • ARM架构各版本内核处理器总结