news 2026/6/10 0:07:19

FreeRTOS中的回调函数

作者头像

张小明

前端开发工程师

1.2k 24
文章封面图
FreeRTOS中的回调函数

https://mp.weixin.qq.com/s/Q1awjcC572ukkRuAGXIRaAhttps://mp.weixin.qq.com/s/Q1awjcC572ukkRuAGXIRaA

FreeRTOS的软件定时器的核心机制是回调函数触发 当你调用xTimerStart()启动定时器时,系统会在指定时间后,自动调用你创建定时器时绑定的回调函数,例如:

// 创建定时器时,绑定回调函数 na_timer = xTimerCreate( "NA_Timer", // 定时器名称 pdMS_TO_TICKS(DEFAULT_NA_PERIOD * 1000), // 默认周期 pdTRUE, // 自动重载(周期触发) NULL, // 定时器ID NaTimerCallback // 绑定的回调函数 );

当定时器到期,FreeRTOS会自动调用CallBack函数 在这里介绍一个机制,就是FreeRTOS的事件驱动框架:FreeRTOS的Queue提供了任务到任务、任务到中断、中断到任务、中断到任务间的通讯机制。对于这些事件,可以定义如下枚举:

typedef enum{ TASK0_EVENT_0, TASK0_EVENT_1, TASK0_EVENT_2, ... }Task0EventType;

我们可能会这样做逻辑执行:

typedef struct Task0Event_t{ Task0EventType type; xxx; }Task0Event; static void ChangeState(Task0Event* event) { switch(event->type) { case TASK0_EVENT_0: ... break; case TASK0_EVENT_1: ... break; default: .. break; } }

这是很常见的写法,在一些业务中,另一种写法会更好一些:就是通过事件回调函数表

typedef struct EventProcessor_t { Task0Event event; Event_Handler handler; } EventProcessor; EventProcessor task0_event_table[] = { {TASK0_EVENT_0, event0_handler}, {TASK0_EVENT_1, event1_handler}, {TASK0_EVENT_2, event2_handler}, ...... }
版权声明: 本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若内容造成侵权/违法违规/事实不符,请联系邮箱:809451989@qq.com进行投诉反馈,一经查实,立即删除!
网站建设 2026/5/28 14:45:17

Open3D完整入门指南:从零开始掌握现代3D数据处理

Open3D完整入门指南:从零开始掌握现代3D数据处理 【免费下载链接】Open3D Open3D: A Modern Library for 3D Data Processing 项目地址: https://gitcode.com/gh_mirrors/op/Open3D Open3D是一个功能强大的开源3D数据处理库,专为计算机视觉、机器…

作者头像 李华
网站建设 2026/6/5 14:17:55

YOLO11算力不够用?多卡并行部署优化实战案例

YOLO11算力不够用?多卡并行部署优化实战案例 YOLO11作为新一代目标检测算法,在精度与速度之间实现了更优的平衡。相比前代版本,它在复杂场景下的小目标识别能力显著提升,同时支持更高分辨率输入和更密集的特征提取。然而&#xf…

作者头像 李华
网站建设 2026/5/30 9:50:48

2026年AI图像修复趋势:fft npainting lama开源模型+弹性算力

2026年AI图像修复趋势:fft npainting lama开源模型弹性算力 1. 引言:图像修复进入“精准重绘”时代 你有没有遇到过这样的情况:一张珍贵的老照片上有划痕,或者截图里带着不想留的水印,又或者合影中出现了不该在的人&…

作者头像 李华
网站建设 2026/5/30 21:29:58

宿主机资源监控:top命令观察unet运行状态实战教程

宿主机资源监控:top命令观察unet运行状态实战教程 1. 教程目标与适用场景 你是否在使用AI模型时遇到过卡顿、响应慢甚至崩溃的情况?尤其是在运行像UNet人像卡通化这类计算密集型任务时,系统资源的使用情况直接决定了处理效率和稳定性。本教…

作者头像 李华
网站建设 2026/6/6 7:49:15

DiT模型如何“看见“世界:注意力可视化深度解析

DiT模型如何"看见"世界:注意力可视化深度解析 【免费下载链接】DiT Official PyTorch Implementation of "Scalable Diffusion Models with Transformers" 项目地址: https://gitcode.com/GitHub_Trending/di/DiT 当我们欣赏DiT模型生成…

作者头像 李华
网站建设 2026/5/28 13:08:26

Anki记忆革命:如何用间隔重复算法重塑学习效率

Anki记忆革命:如何用间隔重复算法重塑学习效率 【免费下载链接】anki Ankis shared backend and web components, and the Qt frontend 项目地址: https://gitcode.com/GitHub_Trending/an/anki 在信息爆炸的时代,我们每天都要面对海量的知识输入…

作者头像 李华