FreeRTOS任务通知API使用示例(备忘)

本文详细介绍了如何在STM32CubeIDE环境中使用FreeRTOS实现任务间的高效通知,包括模拟信号量的API应用、任务的动态创建与接收通知,以及发送任务通知的方法。适合理解和实践嵌入式实时操作系统中的任务协调。
摘要由CSDN通过智能技术生成

一、简介

1.1、开发环境

STM32CubeIDE V1.9,FreeRTOS CMSIS_V1。

1.2、摘要

FreeRTOS任务通知的API范例,编程时复制使用,把“Example"全部替换成所需名称,高效统一。

二、任务通知模拟信号量

2.1、头文件宏定义

接收任务通知的任务的宏定义:

void Example_Task();                                         //任务函数
#define EXAMPLE_TASK_NAME		    "EXAMPLE"                //任务名
#define EXAMPLE_TASK_STACK_SIZE     64                       //任务堆栈大小
#define EXAMPLE_TASK_PARAMETER      NULL                     //任务参数
#define EXAMPLE_TASK_PRIORITY	    30                       //任务优先级
extern TaskHandle_t EXAMPLE_TASK_HANDLE;	                 //任务句柄

#define EXAMPLE_TASK_NOTIFY_EXIT		pdTRUE				 //任务通知退出方式
#define EXAMPLE_TASK_NOTIFY_WAIT_TICK	portMAX_DELAY		 //任务通过等待时长

任务通知退出方式:pdFALSE,在退出ulTaskNotifyTake()的时候,任务通知值减1,类似计数型信号量;pdTRUE,退出ulTaskNotifyTake()的时候,任务通知值清零,类似二值信号量。

2.2、动态创建任务

工程文件(.c)添加以下定义任务句柄的语句:

TaskHandle_t EXAMPLE_TASK_HANDLE;	                  		//任务句柄

创建任务位置,加入以下语句:

	xTaskCreate(											//动态创建任务
			(TaskFunction_t	) Example_Task,					//任务函数
			(char * 		) EXAMPLE_TASK_NAME,			//任务名
			(uint16_t		) EXAMPLE_TASK_STACK_SIZE,		//任务堆栈大小
			(void * 		) EXAMPLE_TASK_PARAMETER,		//任务参数
			(UBaseType_t	) EXAMPLE_TASK_PRIORITY,		//任务优先级
			(TaskHandle_t * ) &EXAMPLE_TASK_HANDLE );		//任务句柄

2.3、接收任务通知

Example_Task()任务如下:

void Example_Task()                //任务函数
{
	while(1)
	{
		if(ulTaskNotifyTake(EXAMPLE_TASK_NOTIFY_EXIT, EXAMPLE_TASK_NOTIFY_WAIT_TICK))    //等待接收任务通知
		{
			//此处填写处理语句
		}
	}
}

返回值:EXAMPLE_TASK_NOTIFY_EXIT为pdTRUE时,ulTaskNotifyTake()返回1;EXAMPLE_TASK_NOTIFY_EXIT为pdFALSE时,ulTaskNotifyTake()返回计数。

2.4、发送任务通知

任务级发送任务通知,使用以下语句:

xTaskNotifyGive(EXAMPLE_TASK_HANDLE);        //发送任务通知

中断级发送任务通知,使用以下语句:

vTaskNotifyGiveFromISR(EXAMPLE_TASK_HANDLE, NULL);        //发送任务通知

注:这两个函数,一个x开头,另一个v开头。

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 打赏
    打赏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包

打赏作者

洪恒远

感君意气无所惜,一为歌行歌主客

¥1 ¥2 ¥4 ¥6 ¥10 ¥20
扫码支付:¥1
获取中
扫码支付

您的余额不足,请更换扫码支付或充值

打赏作者

实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

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

余额充值