news 2026/3/25 20:59:16

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/3/20 20:47:43

深度探索:OpenCode终端AI编程助手的架构设计与实战应用

深度探索:OpenCode终端AI编程助手的架构设计与实战应用 【免费下载链接】opencode 一个专为终端打造的开源AI编程助手,模型灵活可选,可远程驱动。 项目地址: https://gitcode.com/GitHub_Trending/openc/opencode 在当今AI技术飞速发展…

作者头像 李华
网站建设 2026/3/13 7:20:10

Whisper.cpp语音识别实战指南:多平台高效部署与性能优化

Whisper.cpp语音识别实战指南:多平台高效部署与性能优化 【免费下载链接】whisper.cpp OpenAI 的 Whisper 模型在 C/C 中的移植版本。 项目地址: https://gitcode.com/GitHub_Trending/wh/whisper.cpp Whisper.cpp作为OpenAI Whisper模型的C/C移植版本&#…

作者头像 李华
网站建设 2026/3/22 23:36:09

测试开机启动脚本使用指南:让Linux服务随系统启动

测试开机启动脚本使用指南:让Linux服务随系统启动 在Linux系统中,我们经常需要让某些任务或服务在系统启动时自动运行,比如启动监控脚本、初始化环境变量、运行后台程序等。本文将围绕“测试开机启动脚本”这一实际需求,详细介绍…

作者头像 李华
网站建设 2026/3/25 5:41:26

解锁Windows隐藏潜力:PowerToys生产力工具完全手册

解锁Windows隐藏潜力:PowerToys生产力工具完全手册 【免费下载链接】PowerToys Windows 系统实用工具,用于最大化生产力。 项目地址: https://gitcode.com/GitHub_Trending/po/PowerToys 微软PowerToys是一套免费开源的Windows系统增强工具集合&a…

作者头像 李华
网站建设 2026/3/25 1:57:40

终极指南:5分钟学会btop系统监控工具的完整使用方法

终极指南:5分钟学会btop系统监控工具的完整使用方法 【免费下载链接】btop A monitor of resources 项目地址: https://gitcode.com/GitHub_Trending/bt/btop btop是一款功能强大的C系统资源监控工具,能够实时显示处理器、内存、磁盘、网络和进程…

作者头像 李华
网站建设 2026/3/18 12:57:57

Upscayl深度学习图像增强技术深度解析

Upscayl深度学习图像增强技术深度解析 【免费下载链接】upscayl 🆙 Upscayl - Free and Open Source AI Image Upscaler for Linux, MacOS and Windows built with Linux-First philosophy. 项目地址: https://gitcode.com/GitHub_Trending/up/upscayl 图像质…

作者头像 李华