osSemaphoreId_t myCountingSem01Handle;
const osSemaphoreAttr_t myCountingSem01_attributes = {
.name = "myCountingSem01"
};
myCountingSem01Handle = osSemaphoreNew(5, 0, &myCountingSem01_attributes);
void StartTask02(void *argument)
{
/* USER CODE BEGIN StartTask02 */
/* Infinite loop */
// stu_t s1;
for(;;)
{
printf("我生产了俩辆小汽车\r\n");
osSemaphoreRelease(myCountingSem01Handle);
osSemaphoreRelease(myCountingSem01Handle);
osDelay(1000);
}
/* USER CODE END StartTask02 */
}
/* USER CODE BEGIN Header_StartTask03 */
/**
* @brief Function implementing the myTask03 thread.
* @param argument: Not used
* @retval None
*/
/* USER CODE END Header_StartTask03 */
void StartTask03(void *argument)
{
/* USER CODE BEGIN StartTask03 */
/* Infinite loop */
for(;;)
{
osSemaphoreAcquire(myCountingSem01Handle,osWaitForever);
printf("我购买了一辆小汽车\r\n");
osDelay(1);
}
/* USER CODE END StartTask03 */
}
1.15 freertos 计数器生产和消费模型
于 2024-01-15 17:02:53 首次发布
本文介绍了在嵌入式实时操作系统中,如何使用osSemaphore进行同步,展示了生产者任务(生产小汽车)和消费者任务(购买小汽车)通过信号量myCountingSem01进行交互的C代码片段。
摘要由CSDN通过智能技术生成