【详细】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/7/24 20:16:04 阅读更多 →
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/7/24 20:16:04 阅读更多 →
JavaSE 基础语法 - 方法的使用 - ①

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

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

2026/7/24 20:16:04 阅读更多 →

最新新闻

AI生成技术可行性研究报告工具评测与智能写作平台推荐方案

AI生成技术可行性研究报告工具评测与智能写作平台推荐方案

最近我在研究AI怎么辅助写技术可行性研究报告,发现市面上的工具真是五花八门。作为一个经常要搞定项目可研的人,我特别需要一个能帮我把报告写出来、还写得规范的解决方案。这次我把通用大模型、专业工程工具还有智能审查平台都翻了个底朝天,…

2026/7/24 20:24:05 阅读更多 →
抖音无水印下载终极指南:专业级批量下载工具深度解析

抖音无水印下载终极指南:专业级批量下载工具深度解析

抖音无水印下载终极指南:专业级批量下载工具深度解析 【免费下载链接】douyin-downloader A practical Douyin downloader for both single-item and profile batch downloads, with progress display, retries, SQLite deduplication, and browser fallback suppor…

2026/7/24 20:24:05 阅读更多 →
WarcraftHelper终极指南:3步让你的魔兽争霸3在现代电脑上焕发新生

WarcraftHelper终极指南:3步让你的魔兽争霸3在现代电脑上焕发新生

WarcraftHelper终极指南:3步让你的魔兽争霸3在现代电脑上焕发新生 【免费下载链接】WarcraftHelper Warcraft III Helper , support 1.20e, 1.24e, 1.26a, 1.27a, 1.27b 项目地址: https://gitcode.com/gh_mirrors/wa/WarcraftHelper 还在为经典游戏《魔兽争…

2026/7/24 20:24:05 阅读更多 →
防诈交给系统,比靠人更稳:鸿蒙星盾给了升级的底气

防诈交给系统,比靠人更稳:鸿蒙星盾给了升级的底气

纯血鸿蒙值不值得升级?安全是最容易被忽略、却最该算的一笔账。骗术花样翻新,系统级防护比人脑更稳,星盾防诈上线以来已识破347万次潜在骗局,把风险挡在门外。 安全底座获权威认证 鸿蒙系统构筑了强大的安全底座,获得了…

2026/7/24 20:24:05 阅读更多 →
GetQzonehistory:5分钟找回消失的QQ空间记忆,你的数字时光机终极指南

GetQzonehistory:5分钟找回消失的QQ空间记忆,你的数字时光机终极指南

GetQzonehistory:5分钟找回消失的QQ空间记忆,你的数字时光机终极指南 【免费下载链接】GetQzonehistory 获取QQ空间发布的历史说说 项目地址: https://gitcode.com/GitHub_Trending/ge/GetQzonehistory 你是否发现QQ空间只能查看最近几年的说说&a…

2026/7/24 20:24:05 阅读更多 →
通用CI/CD软件平台TeamCity全新发布v2023.11——增强Git托管平台的集成

通用CI/CD软件平台TeamCity全新发布v2023.11——增强Git托管平台的集成

TeamCity是一个通用的 CI/CD 软件平台,可以实现灵活的工作流、协作和开发做法。我们的解决方案将帮助在您的 DevOps 流程中成功实现持续集成、持续交付和持续部署。TeamCity 2023.11 带来了矩阵构建和构建缓存等多项备受期待的功能,这些功能将帮助您更轻…

2026/7/24 20:23:05 阅读更多 →

日新闻

用Highcharts 创建可拖拽三维散点立方体3D图表

用Highcharts 创建可拖拽三维散点立方体3D图表

该案例基于Highcharts scatter3d 三维散点图实现空间立方体散点可视化,核心特色:三维 X/Y/Z 三轴空间,所有散点分布在 0~10 立方体空间内;散点使用径向渐变实现立体 3D 圆球质感;支持鼠标 / 触屏拖拽画布,…

2026/7/24 0:00:29 阅读更多 →
AppCertDlls:进程创建路径上的 DLL 入口

AppCertDlls:进程创建路径上的 DLL 入口

AppCertDlls:进程创建路径上的 DLL 入口 AppCertDlls 位于 HKLM\System\CurrentControlSet\Control\Session Manager\AppCertDlls。本文的程序功能是只读列出这个键在 64 位和 32 位注册表视图中的全部值,并显示每条值的来源、名称、类型和可安全显示的数…

2026/7/24 0:00:29 阅读更多 →
我的编程之路:第一篇博客

我的编程之路:第一篇博客

大家好,我是一名编程初学者,同时这也是我编程学习之路上的第一篇博客。在这里,我想要向大家介绍我的一些想法和规划。a.自我介绍我是一个刚刚接触编程的新手,目前在学习c语言,我对编程世界充满了强烈的好奇。当然&…

2026/7/24 0:00:29 阅读更多 →

周新闻

Go语言静态资源打包方案对比与实践指南

Go语言静态资源打包方案对比与实践指南

1. 项目背景与核心需求在Go语言开发中,我们经常需要处理静态资源文件的打包问题。无论是Web应用的模板文件、前端资源,还是配置文件、证书等,都需要随程序一起分发。传统做法是将这些文件与编译后的二进制文件放在同一目录下,但这…

2026/7/24 3:59:20 阅读更多 →
Go语言实现高性能LDAP认证服务的架构与实践

Go语言实现高性能LDAP认证服务的架构与实践

1. 项目背景与核心价值LDAP(轻量级目录访问协议)作为企业级身份认证的黄金标准,已经服务了超过80%的财富500强公司。我在金融科技领域实施统一认证体系时,发现传统Java方案存在启动慢、内存占用高等痛点。而Go语言凭借其协程并发模…

2026/7/24 1:23:39 阅读更多 →
【AI面试官实战指南】:用ChatGPT模拟10类高频技术岗面试,3天提升应答精准度92%

【AI面试官实战指南】:用ChatGPT模拟10类高频技术岗面试,3天提升应答精准度92%

更多请点击: https://intelliparadigm.com 第一章:AI面试官实战指南的核心价值与适用场景 AI面试官并非替代人类HR的“黑箱工具”,而是以可解释、可审计、可迭代的方式,赋能招聘全链路的关键基础设施。其核心价值在于将主观经验沉…

2026/7/24 18:52:18 阅读更多 →

月新闻