【详细】FreeRTOS软件定时器的内部机制
目录一.硬件定时器二.软件定时器结构体三.启动定时器四.读取定时器一.硬件定时器每一个tick计数值加1.二.软件定时器结构体const char * pcTimerName定时器的文本名称ListItem_t xTimerListItem记载软件定时器的列表TickType_t xTimerPeriodInTicks定时器的周期或超时时间void * pvTimerID定时器IDTimerCallbackFunction_t pxCallbackFunction定时器到期时将要调用的回调函数指针uint8_t ucStatus; 定时器的状态位掩码三.启动定时器1.先创建一个xMessage结构体并赋值2.把这个结构体写入xTimerQueue队列中正因为有了这个等待时间ListItem_t xTimerListItem才起到了作用这时候就和写队列的操作一样时间到了超时返回时间未到放入链表阻塞并等待被唤醒。还有一个问题这个队列是何时创建的呢四.读取定时器1.谁来读取呢调度器创建的Timer Task这个任务的作用prvGetNextExpireTime作用查询当前定时器列表找出下一个即将到期的定时器的到期时间以系统节拍计数值表示。prvProcessTimerOrBlockTask作用根据定时器到期时间决定行为如果有定时器到期了即系统节拍计数已达到或超过 xNextExpireTime则处理该到期定时器调用其注册的回调函数 pxCallbackFunction如果是周期定时器重新计算下次到期时间并将其插回定时器列表。如果定时器列表为空xListWasEmpty pdTRUE则将定时器服务任务无限阻塞直到命令队列收到新命令例如启动某个定时器。否则有定时器但尚未到期将任务阻塞直到最近的一个定时器到期时间到达或命令队列收到命令两者中较早者唤醒任务。prvProcessReceivedCommands作用处理定时器命令队列Timer Command Queue中积累的所有命令。这些命令由其他任务或中断通过 API 发送例如xTimerStart / xTimerStop启动/停止定时器xTimerChangePeriod改变定时器周期、xTimerReset重置定时器、创建/删除定时器等该函数会依次取出命令并对目标定时器控制块xTIMER执行相应操作插入/移除列表、修改周期、调用回调等。创造不易多加支持点赞!

相关新闻

【LLM】深入理解FFN

【LLM】深入理解FFN

为什么要: 4096 ↓ 11008 ↓ 4096为什么不是: 4096 ↓ 4096为什么: GeLU? 为什么: SiLU? 为什么: SwiGLU? 一、如果没有 FFN,会发生什么? 假设Transformer 没有 FFN,只有: Token│ Attention│ Attention│ Attention会发生什么? 我们知道,Attention 负…

2026/8/22 10:01:03 阅读更多 →
3步掌握Reloaded-II:告别游戏模组冲突的终极解决方案

3步掌握Reloaded-II:告别游戏模组冲突的终极解决方案

3步掌握Reloaded-II:告别游戏模组冲突的终极解决方案 【免费下载链接】Reloaded-II Universal .NET Core Powered Modding Framework for any Native Game X86, X64. 项目地址: https://gitcode.com/gh_mirrors/re/Reloaded-II 还在为游戏模组安装繁琐、频繁…

2026/8/24 9:43:23 阅读更多 →
JavaSE 基础语法 - 方法的使用 - ①

JavaSE 基础语法 - 方法的使用 - ①

在实际开发中,一个完整的程序往往由成千上万个方法组成。 例如,我们每天使用的微信、支付宝、淘宝等应用,每点击一个按钮、发送一条消息、完成一次支付,背后都会调用不同的方法来完成相应的功能。 那么,什么是方法&…

2026/8/21 19:40:01 阅读更多 →

最新新闻

AI Agent风控实战:RiskGuard风险网关设计与Python实现

AI Agent风控实战:RiskGuard风险网关设计与Python实现

/* MD / 富文本中的 .toc(含博客园搬家等嵌套结构);.toc-box 在侧栏,不受影响 */#content_views .toc,/* 编辑器常在目录前后插入空 p(:empty 仍占 20px),一并去掉避免顶空隙 */#content_views.markdown_views > p:empty:has(+ .toc),#content_views.markdown_views …

2026/9/2 18:02:46 阅读更多 →
Python背记手册高效使用指南:从核心语法到工程实践

Python背记手册高效使用指南:从核心语法到工程实践

/* MD / 富文本中的 .toc(含博客园搬家等嵌套结构);.toc-box 在侧栏,不受影响 */#content_views .toc,/* 编辑器常在目录前后插入空 p(:empty 仍占 20px),一并去掉避免顶空隙 */#content_views.markdown_views > p:empty:has(+ .toc),#content_views.markdown_views …

2026/9/2 18:02:46 阅读更多 →
百花奖首设AIGC单元:影视工业如何拥抱AI生成内容?

百花奖首设AIGC单元:影视工业如何拥抱AI生成内容?

/* MD / 富文本中的 .toc(含博客园搬家等嵌套结构);.toc-box 在侧栏,不受影响 */#content_views .toc,/* 编辑器常在目录前后插入空 p(:empty 仍占 20px),一并去掉避免顶空隙 */#content_views.markdown_views > p:empty:has(+ .toc),#content_views.markdown_views …

2026/9/2 18:02:46 阅读更多 →
Windows 自动锁屏怎么设置?先分清息屏、睡眠和会话锁定

Windows 自动锁屏怎么设置?先分清息屏、睡眠和会话锁定

离开座位后显示器已经黑了,回来碰一下鼠标却直接进入桌面,这通常不是“自动锁屏失效”,而是只触发了显示器关闭。我们在开发超级看门狗 SuperWatchDog,它是一款 Windows 本地隐私保护工具,用自动触发处理有人突然靠近、…

2026/9/2 18:02:46 阅读更多 →
本地部署全能格式转换工具:音频、图片、文档批量处理与API集成指南

本地部署全能格式转换工具:音频、图片、文档批量处理与API集成指南

/* MD / 富文本中的 .toc(含博客园搬家等嵌套结构);.toc-box 在侧栏,不受影响 */#content_views .toc,/* 编辑器常在目录前后插入空 p(:empty 仍占 20px),一并去掉避免顶空隙 */#content_views.markdown_views > p:empty:has(+ .toc),#content_views.markdown_views …

2026/9/2 18:02:46 阅读更多 →
Visio 从下载安装到高效绘图的完整指南:避坑与核心技巧

Visio 从下载安装到高效绘图的完整指南:避坑与核心技巧

/* MD / 富文本中的 .toc(含博客园搬家等嵌套结构);.toc-box 在侧栏,不受影响 */#content_views .toc,/* 编辑器常在目录前后插入空 p(:empty 仍占 20px),一并去掉避免顶空隙 */#content_views.markdown_views > p:empty:has(+ .toc),#content_views.markdown_views …

2026/9/2 18:01:46 阅读更多 →

日新闻

QEMU为什么能模拟不同CPU?从ISA、CPU模型到指令翻译讲起

QEMU为什么能模拟不同CPU?从ISA、CPU模型到指令翻译讲起

1. 引言:一个软件为何能“伪装”成不同CPUQEMU 是一款广为人知的开源模拟器,它既能在一台 x86 电脑上运行 ARM 系统,也能在 ARM 开发板上启动 x86 的 Linux 发行版。很多人第一次接触 QEMU 时都会好奇:一个纯软件程序,…

2026/9/2 0:00:30 阅读更多 →
单片机计算机毕设之基于 STM32 或 51 单片机的感知式智能垃圾桶硬件控制系统设计 基于 STM32 或 51 单片机的安全防护型智能垃圾桶装置设计(025005)

单片机计算机毕设之基于 STM32 或 51 单片机的感知式智能垃圾桶硬件控制系统设计 基于 STM32 或 51 单片机的安全防护型智能垃圾桶装置设计(025005)

博主介绍:✌️码农一枚 ,专注于大学生项目实战开发、讲解和毕业🚢文撰写修改等。全栈领域优质创作者,博客之星、掘金/华为云/阿里云/InfoQ等平台优质作者、专注于嵌入式单片机,Java、小程序技术领域和毕业项目实战 ✌️…

2026/9/2 0:00:30 阅读更多 →
单片机计算机毕设之基于 ESP8266 的智能垃圾分类桶 APP 监控系统设计与实现 基于单片机的超声波满溢检测垃圾分类装置设计(025105)

单片机计算机毕设之基于 ESP8266 的智能垃圾分类桶 APP 监控系统设计与实现 基于单片机的超声波满溢检测垃圾分类装置设计(025105)

博主介绍:✌️码农一枚 ,专注于大学生项目实战开发、讲解和毕业🚢文撰写修改等。全栈领域优质创作者,博客之星、掘金/华为云/阿里云/InfoQ等平台优质作者、专注于嵌入式单片机,Java、小程序技术领域和毕业项目实战 ✌️…

2026/9/2 0:00:30 阅读更多 →

周新闻

备战数据库管理工程师校招:索引、事务、备份恢复核心考点解析

备战数据库管理工程师校招:索引、事务、备份恢复核心考点解析

每年校招季我都会接触不少准备数据库方向笔试的同学,看到最多的状态就是:简历上写着“熟悉 MySQL”“了解索引优化”,一碰到数据库管理工程师的笔试卷,却在索引、事务、锁、备份恢复这些题目上翻车。网易这套 2018 校园招聘数据库…

2026/9/1 19:44:48 阅读更多 →
数字电路时序基石:深入理解建立时间与保持时间

数字电路时序基石:深入理解建立时间与保持时间

1. 这不是“背公式”的事:时间参数到底在约束什么你翻过数字电路教材,一定见过这两个词:建立时间(Setup Time)和保持时间(Hold Time)。它们常被并列写在触发器(Flip-Flop&#xff09…

2026/9/1 18:13:19 阅读更多 →
蓝桥杯国赛超声波测距机:从单片机原理到嵌入式系统实战

蓝桥杯国赛超声波测距机:从单片机原理到嵌入式系统实战

1. 项目缘起:从赛题到超声波测距机的诞生第八届蓝桥杯单片机设计与开发国赛的题目,我至今记忆犹新。它没有直接给出一个花哨的名字,而是用“超声波测距机”这个朴实无华的功能描述,精准地勾勒出了考核的核心。对于当时备赛的我而言…

2026/9/2 1:01:37 阅读更多 →

月新闻

持续集成 流水线自动化与 声明式交付 实践:原型怎样变成可用功能

持续集成 流水线自动化与 声明式交付 实践:原型怎样变成可用功能

持续集成 流水线自动化与 声明式交付 实践:原型怎样变成可用功能分类:[AI/大模型]细分主题:AI 增强型 CI/CD 流水线自动化与 GitOps 实践:Agent 工作流、工具调用与任务拆解:从原型到生产的验收清单很多团队在尝试用大…

2026/9/2 1:06:24 阅读更多 →
容器编排 生产环境运维与排障实战:复盘记录怎样真正派上用场

容器编排 生产环境运维与排障实战:复盘记录怎样真正派上用场

容器编排 生产环境运维与排障实战:复盘记录怎样真正派上用场分类:[工程技术]细分主题:Kubernetes 生产环境运维与排障实战:可复制的项目复盘模板与决策记录大部分团队的事故复盘报告,最后都变成了躺在 Confluence 或钉…

2026/9/2 1:01:13 阅读更多 →
容器 容器化技术与镜像安全管理:核心链路应该先拆哪一步

容器 容器化技术与镜像安全管理:核心链路应该先拆哪一步

容器 容器化技术与镜像安全管理:核心链路应该先拆哪一步分类:[工程技术]细分主题:Docker 容器化技术与镜像安全管理:核心链路的逐步实现与关键代码取舍面对一个积累了五六年历史包袱的单体架构应用(包含 Web 接口、后台…

2026/9/2 2:01:56 阅读更多 →