下载 FreeRTOS
 

出色的 RTOS & 嵌入式软件

内核
最新资讯
简化任何设备的身份验证云连接。
利用 CoAP 设计节能型云连接 IoT 解决方案。
11.0.0 版 FreeRTOS 内核简介:
FreeRTOS 路线图和代码贡献流程。
使用 FreeRTOS 实现 OPC-UA over TSN。

xTaskCallApplicationTaskHook
[任务控制]

task. h
BaseType_t xTaskCallApplicationTaskHook( TaskHandle_t xTask, void *pvParameter );

configUSE_APPLICATION_TASK_TAG 必须定义为 1,此函数才可用。 有关详细信息,请参阅 RTOS 配置文档。

可以为每个任务分配“标签”值。 通常,此值仅供应用程序使用,并且 RTOS 内核无法访问它。 但是,可以 使用标签为任务分配钩子(或回调)函数——通过调用 xTaskCallApplicationTaskHook() 执行该钩子函数。 每个任务都可以定义 自己的回调,或者干脆不定义回调。

尽管可以使用第一个函数参数来调用任何任务的钩子函数, 但任务钩子函数最常见的用途是与跟踪钩子宏一起使用,如下面的例子所示。

任务钩子函数必须具有 TaskHookFunction_t 类型,即接受一个 void * 参数,并返回一个 BaseType_t 类型的值。 void * 参数可用于 将任何信息传递到钩子函数中。

参数:
xTask 其钩子函数被调用的任务的句柄。 传递 NULL 作为 xTask 将调用与当前执行的任务相关的钩子函数。
pvParameter 要传递给钩子函数的值。 这可以是指向一个结构体的指针,也可以是一个数值。
用法示例:
/* In this example a callback function is being assigned as the task tag. First define the callback function - this must have type TaskHookFunction_t as per this example. */ static BaseType_t prvExampleTaskHook( void * pvParameter ) { /* Perform some action - this could be anything from logging a value, updating the task state, outputting a value, etc. */ return 0; } /* Now define the task that sets prvExampleTaskHook as its hook/tag value. This is in fact registering the task callback, as described on the xTaskCallApplicationTaskHook() documentation page. */ void vAnotherTask( void *pvParameters ) { /* Register our callback function. */ vTaskSetApplicationTaskTag( NULL, prvExampleTaskHook ); for( ;; ) { /* Rest of task code goes here. */ } } /* As an example use of the hook (callback) we can get the RTOS kernel to call the hook function of each task that is being switched out during a reschedule. */ #define traceTASK_SWITCHED_OUT() xTaskCallApplicationTaskHook( pxCurrentTCB, 0 )





Copyright (C) Amazon Web Services, Inc. or its affiliates. All rights reserved.