下载 FreeRTOS
 

出色的 RTOS & 嵌入式软件

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

钩子函数

空闲钩子函数

空闲任务可以选择性地调用应用程序定义的钩子(或回调)函数 — 空闲钩子。 空闲任务以最低优先级运行, 因此只有在没有能够运行的更高优先级的任务时,这种空闲钩子函数才会被执行。 这使的空闲钩子函数成为使处理器进入低功率状态的理想场所 -- 每当没有要执行的处理时提供自动节能。

只有 configUSE_IDLE_HOOK 在 FreeRTOSConfig.h 中设置为 1 时,才会调用空闲钩子。 设置后,应用程序必须为钩子函数提供以下原型 :

void vApplicationIdleHook( void );
只要空闲任务正在运行,就会重复调用空闲钩子。 最重要的是,空闲钩子函数不调用任何可能导致其阻塞的 API 函数。 此外,如果应用程序使用 vTaskDelete() API 函数,则必须允许空闲任务钩子定期返回 (这是因为空闲任务负责清理 RTOS 内核分配给已删除任务的资源)。



Tick 钩子函数

tick 中断可以选择性地调用应用程序定义的钩子(或回调)函数 — tick 钩子。 tick 钩子提供了一个方便的地方来实现定时器功能 。

只有 configUSE_TICK_HOOK 在 FreeRTOSConfig.h 中设置为 1 时,才会调用 tick 钩子。 设置后,应用程序必须为钩子函数提供以下原型 :

void vApplicationTickHook( void );
vApplicationTickHook() 从 ISR 内执行,因此必须非常短,不使用很多堆栈,并且不调用任何不以 "FromISR" 或 "FROM_ISR" 结尾的 API 函数。

请参阅演示应用程序文件 crhook.c,获取 tick 钩子使用方法。



Malloc 失败钩子函数

heap_1.c、heap_2.c、heap_3.c、heap_4.c 和 heap_5.c 实现的内存分配方案可以选择性地包含 malloc() 失败钩子(或回调)函数,该函数可以配置为在 pvPortMalloc() 返回 NULL 时被调用。

定义 malloc() 失败钩子将有助于识别由堆内存不足引起的问题,特别是当在 API 函数中调用 pvPortMalloc() 失败时 。

只有 configUSE_MALLOC_FAILED_HOOK 在 FreeRTOSConfig.h 中设置为 1 时,才会调用 malloc 失败钩子。 设置后,应用程序必须为钩子函数提供以下原型 :

void vApplicationMallocFailedHook( void );



堆栈溢出钩子函数

请参阅堆栈溢出保护页面,获取详细信息。



守护进程任务启动钩子

RTOS 守护进程任务与定时器服务任务相同。 有时它被称为守护进程任务, 因为该任务现在不仅仅用于服务定时器。

如果 configUSE_DAEMON_TASK_STARTUP_HOOK 在 FreeRTOSConfig.h 中设置为 1 , 则守护进程任务首次开始执行时,会调用守护进程任务启动钩子 。 如果应用程序包含会从调度器启动后执行中受益的初始化代码, 这将非常有用,允许 初始化代码利用 RTOS 功能。

如果 configUSE_DAEMON_TASK_STARTUP_HOOK 设置为 1 ,则应用程序编写者必须 提供守护进程任务启动钩子函数的实现,且具有以下名称和原型 :

void vApplicationDaemonTaskStartupHook( void );



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