FreeRTOS 学习:(三十四)钩子函数
简要介绍了钩子函数
·
| 上一篇 | 下一篇 |
|---|---|
| 内存泄漏 |
钩子函数
1)说明
“钩子函数”(Hook Function)本质上是:在系统预留的特定位置,由用户自己实现、由系统自动调用的函数 。 即这个函数的声明、调用,系统已经安排好了,但是函数内容是空的,需要用户自己编写。系统在合适时机 “钩住” 你写的函数执行 —— 这就叫 钩子函数。
钩子函数的核心特征:
| 特征 | 说明 |
|---|---|
| 由系统调用 | 不是你主动调用 |
| 你来实现 | 系统只声明 |
| 固定名字 | 必须按规定命名 |
| 固定时机 | 在特定事件发生时执行 |
2)举例
在 FreeRTOS 中,钩子函数非常典型。比如:
-
① 空闲任务钩子函数(Idle Hook)
在 task.h 文件中,有如下本就有的代码:
#if ( configUSE_IDLE_HOOK == 1 ) /** * 应用程序空闲钩子函数由空闲任务调用。 * 这允许应用程序设计者添加后台功能,而无需创建单独任务所带来的开销。 * 注意:vApplicationIdleHook()在任何情况下都不得调用可能导致阻塞的函数。 **/ void vApplicationIdleHook( void ); #endif用户可以自定义:
void vApplicationIdleHook(void) { // 这里写你想在空闲时执行的代码 }当系统没有任务可运行时,空闲任务会自动调用它。前提是:
#define configUSE_IDLE_HOOK 1 -
② Tick 钩子函数(Tick Hook)
在 task.h 文件中,有如下本就有的代码:
#if ( configUSE_TICK_HOOK != 0 ) /** * 该钩子函数在系统时钟节拍处理程序中被调用,且在所有操作系统相关工作完成后执行。 **/ void vApplicationTickHook( void ); #endif用户可以自定义:
void vApplicationTickHook(void) { // 每次 tick 中断都会调用 }前提是:
#define configUSE_TICK_HOOK 1 -
… 还有很多 …
openvela 操作系统专为 AIoT 领域量身定制,以轻量化、标准兼容、安全性和高度可扩展性为核心特点。openvela 以其卓越的技术优势,已成为众多物联网设备和 AI 硬件的技术首选,涵盖了智能手表、运动手环、智能音箱、耳机、智能家居设备以及机器人等多个领域。
更多推荐



所有评论(0)