当前位置: 首页 > article >正文

21 鸿蒙LiteOS软件定时器实战:多定时器周期性任务完整示例(源码+解析)

鸿蒙LiteOS软件定时器实战多定时器周期性任务完整示例源码解析一、前言在嵌入式鸿蒙OpenHarmony LiteOS开发中软件定时器是实现周期性任务、延时任务、定时触发逻辑的核心内核工具无需占用硬件定时器资源支持创建多个定时器同时运行。本文基于LiteOS内核API手把手讲解软件定时器创建、启动、周期性运行的完整流程提供可直接编译运行的标准源码适合鸿蒙单片机开发入门学习。哔站视频《06RK2206 OpenHarmonyOS 鸿蒙 软件定时器与硬件定时器区别 软件定时器与任务区别 软件定时器实战》https://www.bilibili.com/video/BV1w3546DEBS/?vd_source3a9dd7a328acafb09dd1b8d05f3e2bf7哔站视频《05RK2206 OpenHarmonyOS 鸿蒙 什么是信号量 为什么需要信号量 代码演示》https://www.bilibili.com/video/BV1to5W6pETF/?vd_source3a9dd7a328acafb09dd1b8d05f3e2bf7哔站视频《04RK2206 OpenHarmonyOS 鸿蒙 任务实战》https://www.bilibili.com/video/BV15R5E6JEHy/哔站视频《03RK2206 鸿蒙 LiteOS 如何通过控制编译选项编译不同案例》https://www.bilibili.com/video/BV15e5J6QEGY/?spm_id_from333.1387.homepage.video_card.clickvd_source3a9dd7a328acafb09dd1b8d05f3e2bf7哔站视频《02RK2206 鸿蒙 LiteOS bin 文件 烧写》https://www.bilibili.com/video/BV1pcRdBaEAt/?spm_id_from333.1387.homepage.video_card.clickvd_source3a9dd7a328acafb09dd1b8d05f3e2bf7哔站视频《01RK2206 鸿蒙 LiteOS ubuntu 开发环境 全程 安装配置》https://www.bilibili.com/video/BV1nrRkBoEMR/?spm_id_from333.1387.homepage.video_card.clickvd_source3a9dd7a328acafb09dd1b8d05f3e2bf7二、LiteOS软件定时器核心概念1. 什么是软件定时器软件定时器是基于系统时钟节拍实现的定时服务由LiteOS内核提供不依赖硬件外设可创建多个独立定时器分别设置不同超时时间和回调函数。2. 软件定时器主要作用实现周期性任务每隔1s、2s执行一段逻辑实现延时触发功能替代硬件定时器节省硬件资源多任务定时调度简化业务逻辑3. 核心工作模式本文使用LOS_SWTMR_MODE_PERIOD周期性模式定时器超时后自动重启循环执行回调函数直到手动停止/删除。三、软件定时器核心API函数API函数功能说明LOS_SwtmrCreate创建软件定时器指定超时时间、模式、回调函数LOS_SwtmrStart启动已创建的定时器LOS_SwtmrStop停止正在运行的定时器LOS_SwtmrDelete删除定时器释放内核资源API参数说明LOS_SwtmrCreate(timeout,// 超时时间单位TickLiteOS默认1Tick1msmode,// 模式单次/周期callback,// 超时回调函数timerID,// 定时器ID输出arg// 回调函数参数)四、完整可运行源码#includelos_swtmr.h#includeohos_init.hvoidtimer1_timeout(void*arg){printf(This is Timer1 Timeout function\n);}voidtimer2_timeout(void*arg){printf(This is Timer2 Timeout function\n);}voidtimer_example(){unsignedinttimer_id1,timer_id2;unsignedintret;/* 创建定时器11000ms 1s 周期性执行 */retLOS_SwtmrCreate(1000,LOS_SWTMR_MODE_PERIOD,timer1_timeout,timer_id1,NULL);if(retLOS_OK){retLOS_SwtmrStart(timer_id1);if(ret!LOS_OK){printf(start timer1 fail ret:0x%x\n,ret);return;}}else{printf(create timer1 fail ret:0x%x\n,ret);return;}/* 创建定时器22000ms 2s 周期性执行 */retLOS_SwtmrCreate(2000,LOS_SWTMR_MODE_PERIOD,timer2_timeout,timer_id2,NULL);if(retLOS_OK){retLOS_SwtmrStart(timer_id2);if(ret!LOS_OK){printf(start timer2 fail ret:0x%x\n,ret);return;}}else{printf(create timer2 fail ret:0x%x\n,ret);return;}}/* 系统自动初始化入口 */APP_FEATURE_INIT(timer_example);五、代码逻辑逐行解析1. 头文件los_swtmr.hLiteOS软件定时器内核头文件ohos_init.h鸿蒙自动初始化模块头文件2. 定时器回调函数timer1_timeout定时器1超时执行函数1s执行一次timer2_timeout定时器2超时执行函数2s执行一次3. 定时器创建与启动流程调用LOS_SwtmrCreate创建定时器判断创建是否成功返回LOS_OK调用LOS_SwtmrStart启动定时器两个定时器独立运行互不干扰4. 自动初始化APP_FEATURE_INIT(timer_example);系统启动时自动执行定时器初始化无需手动调用。六、串口运行打印效果Timer1每隔1s打印一次Timer2每隔2s打印一次两个定时器周期性并发运行七、常见注意事项回调函数不能阻塞不能在定时器回调里使用延时、死循环、阻塞API回调函数要简洁只处理快速逻辑避免占用系统时钟单位是毫秒LiteOS默认配置 1 Tick 1ms多定时器互不影响可同时创建N个软件定时器并行运行必须先创建、再启动否则定时器不会运行八、对比分析 任务 与 软件定时器对比项任务Task / 线程软件定时器Software Timer运行方式独立循环执行只在超时时刻触发一次回调能否阻塞可以延时、等待信号量、休眠绝对不能一阻塞系统就崩溃优先级可设置独立优先级共享定时器任务优先级不可单独设置资源占用较高需要独立栈极低共用栈执行时长可长可短必须极短几ms内完成使用场景大循环逻辑、复杂业务定时计数、定时打印、定时触发标志能否等待信号量✅ 可以❌ 不可以能否延时✅ LOS_Msleep 可以❌ 绝对不可以定时器回调函数绝对不能做不能延时LOS_Msleep不能死循环不能等待信号量/消息队列不能执行耗时操作超过10ms都危险任务可以随便做可以循环可以阻塞可以等待可以运行复杂业务九、什么时候用定时器什么时候用任务✅ 用定时器的场景定时1秒打印一次日志定时刷新LED定时更新计数器定时设置一个标志位功能简单、时间短、到点触发一下✅ 用任务的场景需要大循环需要等待信号量需要处理复杂逻辑需要阻塞、延时、休眠需要处理串口、网络、文件系统

相关文章:

21 鸿蒙LiteOS软件定时器实战:多定时器周期性任务完整示例(源码+解析)

鸿蒙LiteOS软件定时器实战:多定时器周期性任务完整示例(源码解析) 一、前言 在嵌入式鸿蒙(OpenHarmony LiteOS)开发中,软件定时器是实现周期性任务、延时任务、定时触发逻辑的核心内核工具,无…...

3步解锁QQ音乐格式限制:qmcflac2mp3让你的音乐随处可听

3步解锁QQ音乐格式限制:qmcflac2mp3让你的音乐随处可听 【免费下载链接】qmcflac2mp3 直接将qmcflac文件转换成mp3文件,突破QQ音乐的格式限制 项目地址: https://gitcode.com/gh_mirrors/qm/qmcflac2mp3 你是否曾经遇到过这样的烦恼:从…...

ElevenLabs缅甸文语音准确率仅68.3%?实测对比5种预处理方案,第4种提升至92.7%(附Jupyter验证代码)

更多请点击: https://kaifayun.com 第一章:ElevenLabs缅甸文语音准确率实测基准与问题定位 为系统评估 ElevenLabs 对缅甸文(Burmese, my-MM)语音合成的准确性,我们在统一硬件环境(Intel i7-11800H 32GB …...

马来文语音合成效果差?3步诊断法+5个权威音素校准参数,立竿见影提升自然度与语调准确率

更多请点击: https://codechina.net 第一章:马来文语音合成效果差?3步诊断法5个权威音素校准参数,立竿见影提升自然度与语调准确率 马来文(Bahasa Melayu)语音合成常因音素切分模糊、重音规则缺失及语调建…...

5分钟上手:用VMagicMirror打造你的虚拟形象分身

5分钟上手:用VMagicMirror打造你的虚拟形象分身 【免费下载链接】VMagicMirror VRM Software for Windows to move avatar with minimal devices. 项目地址: https://gitcode.com/gh_mirrors/vm/VMagicMirror VMagicMirror是一款专为Windows设计的开源虚拟角…...

10分钟搞定黑苹果:OpCore-Simplify自动化配置工具完全指南

10分钟搞定黑苹果:OpCore-Simplify自动化配置工具完全指南 【免费下载链接】OpCore-Simplify A tool designed to simplify the creation of OpenCore EFI 项目地址: https://gitcode.com/GitHub_Trending/op/OpCore-Simplify 还在为复杂的黑苹果配置而烦恼吗…...

开源数字微流控平台OpenDrop:3步打造你的微型生物实验室

开源数字微流控平台OpenDrop:3步打造你的微型生物实验室 【免费下载链接】OpenDrop Open Source Digital Microfluidics Bio Lab 项目地址: https://gitcode.com/gh_mirrors/ope/OpenDrop 你是否曾梦想在桌面上建立一个完整的生物实验室?OpenDrop…...

5分钟搞定:Buzz音频转录软件常见问题快速解决指南 [特殊字符]

5分钟搞定:Buzz音频转录软件常见问题快速解决指南 🎯 【免费下载链接】buzz Buzz transcribes and translates audio offline on your personal computer. Powered by OpenAIs Whisper. 项目地址: https://gitcode.com/GitHub_Trending/buz/buzz …...

G-Helper终极指南:释放华硕笔记本潜能的免费开源神器

G-Helper终极指南:释放华硕笔记本潜能的免费开源神器 【免费下载链接】g-helper Lightweight Armoury Crate alternative for Asus laptops with nearly the same functionality. Works with ROG Zephyrus, Flow, TUF, Strix, Scar, ProArt, Vivobook, Zenbook, Exp…...

5分钟搞定:用WinDiskWriter在Mac上制作Windows启动盘,轻松绕过TPM限制

5分钟搞定:用WinDiskWriter在Mac上制作Windows启动盘,轻松绕过TPM限制 【免费下载链接】windiskwriter 🖥 Windows Bootable USB creator for macOS. 🛠 Patches Windows 11 to bypass TPM and Secure Boot requirements. &#x…...

基于STM32的直流电机串级PID伺服控制系统设计与实现

摘要:本文设计并实现了一套基于STM32F103C8T6微控制器的直流电机串级PID伺服控制系统。该系统采用TB6612FNG驱动芯片控制带霍尔编码器的直流减速电机,通过位置-速度双闭环串级控制架构,实现了对电机位置和速度的高精度、快速响应控制。项目简…...

LiveSplit终极指南:速度跑者的专业计时解决方案

LiveSplit终极指南:速度跑者的专业计时解决方案 【免费下载链接】LiveSplit A sleek, highly customizable timer for speedrunners. 项目地址: https://gitcode.com/gh_mirrors/li/LiveSplit LiveSplit是一款专为速度跑者设计的专业计时软件,通过…...

盒子不同定位的解说!

目录 一、相对定位 二、绝对定位 三、固定定位 一、相对定位 【概念】:简单来说,就是让一个元素相对于它自己原本应该在的位置进行移动。 【核心特点】:1.不脱离文档流:这是相对定位最关键的特点。元素虽然移动了&#xff0c…...

HarmonyOS APP<<古今职鉴定>>开源教程第20篇:农历日期与节日计算

本篇学习农历算法,实现年俗内容的日期驱动图:农历日期与节日计算 的关键流程与实现要点。 学习目标 完成本篇后,你将能够: ✅ 理解农历算法原理✅ 实现公历转农历✅ 计算传统节日✅ 实现年俗日期匹配 预计学习时间 约 90 分钟…...

5步彻底解决显卡驱动问题:Display Driver Uninstaller完整指南

5步彻底解决显卡驱动问题:Display Driver Uninstaller完整指南 【免费下载链接】display-drivers-uninstaller Display Driver Uninstaller (DDU) a driver removal utility / cleaner utility 项目地址: https://gitcode.com/gh_mirrors/di/display-drivers-unin…...

如何快速掌握LuaJIT字节码还原:面向开发者的完整指南

如何快速掌握LuaJIT字节码还原:面向开发者的完整指南 【免费下载链接】luajit-decompiler https://gitlab.com/znixian/luajit-decompiler 项目地址: https://gitcode.com/gh_mirrors/lu/luajit-decompiler LuaJIT反编译器(LuaJIT Raw-Bytecode D…...

MapTRV2 部署训练与测试(踩坑版本)

1. 背景 目录 1. 背景 1.1 结果 1.1.1 过程截图 存在的坑 安装环境 踩坑记录 过程记录 requirements.txt 设置调试的launch.json数据 合成视频脚本 跑通了MapTRV1 ,想继续跑通MapTRV2,安装运行的时候都存在问题,先从网上找了一些相关的教程,发现教程需要收费,作为白嫖党怎…...

ElevenLabs希腊文语音合成精度提升87%:基于ISO 639-2标准的音素对齐校准全流程详解

更多请点击: https://kaifayun.com 第一章:ElevenLabs希腊文语音合成精度提升87%的工程意义与语言学背景 ElevenLabs在2024年Q2发布的v3.2语音模型中,针对现代希腊语(el-GR)的语音合成MOS(Mean Opinion S…...

【仅剩最后47份】盐印相风格训练数据集泄露报告(含原始Agfa APX 400扫描底片参数+Midjourney反向蒸馏权重)

更多请点击: https://codechina.net 第一章:盐印相风格的视觉基因与数字重生 盐印相(Salted Paper Print)作为19世纪早期摄影术的奠基性工艺,其独特颗粒质感、柔和影调过渡与温润泛黄基底,构成了不可复制的…...

Adobe-GenP 3.0:三步解锁Adobe全家桶的终极破解指南

Adobe-GenP 3.0:三步解锁Adobe全家桶的终极破解指南 【免费下载链接】Adobe-GenP Adobe CC 2019/2020/2021/2022/2023 GenP Universal Patch 3.0 项目地址: https://gitcode.com/gh_mirrors/ad/Adobe-GenP Adobe Creative Cloud的订阅费用让许多设计师望而却…...

5分钟掌握GoReleaser:自动化发布Go项目的终极指南 [特殊字符]

5分钟掌握GoReleaser:自动化发布Go项目的终极指南 🚀 【免费下载链接】goreleaser Release engineering, simplified 项目地址: https://gitcode.com/gh_mirrors/go/goreleaser 还在为每次发布Go项目而烦恼吗?手动构建二进制文件、打包…...

Ladybug天气数据分析工具:建筑环境设计的智能助手

Ladybug天气数据分析工具:建筑环境设计的智能助手 【免费下载链接】ladybug 🐞 Core ladybug library for weather data analysis and visualization 项目地址: https://gitcode.com/gh_mirrors/lad/ladybug Ladybug是一个功能强大的Python天气数…...

vscode使用claude code接入deepseek教程

1 在VSCode拓展商城中搜索Claude Code for VS Code,安装2 快捷键Ctrl“,”,进入设置,选择拓展,选择Claude Code。接着往下拉找到Environment Variables,点击下方的“在settings.json中编辑”,将…...

终极指南:在Debian/Ubuntu系统上快速配置DisplayLink多屏扩展驱动

终极指南:在Debian/Ubuntu系统上快速配置DisplayLink多屏扩展驱动 【免费下载链接】displaylink-debian DisplayLink driver installer for Debian and Ubuntu based Linux distributions. 项目地址: https://gitcode.com/gh_mirrors/di/displaylink-debian …...

Qt 高级开发 009: C++ Lambda 表达式

Qt 高级开发 009: C Lambda 表达式Bilibili 同步视频🔎 一、Lambda 表达式:到底是什么?🧩 二、Lambda 完整结构:六大核心组件1. 捕获列表 [ ] 🎫2. 参数列表 ( ) 📥3. mutable 关键字…...

KMS_VL_ALL_AIO:一键激活Windows与Office的完整解决方案

KMS_VL_ALL_AIO:一键激活Windows与Office的完整解决方案 【免费下载链接】KMS_VL_ALL_AIO Smart Activation Script 项目地址: https://gitcode.com/gh_mirrors/km/KMS_VL_ALL_AIO 你是否曾经为Windows或Office的激活问题而烦恼?每次重装系统后都…...

利用Taotoken CLI工具一键配置团队开发环境中的大模型调用参数

🚀 告别海外账号与网络限制!稳定直连全球优质大模型,限时半价接入中。 👉 点击领取海量免费额度 利用Taotoken CLI工具一键配置团队开发环境中的大模型调用参数 在团队开发环境中,统一管理大模型调用参数是一个常见痛…...

G-ratio Overload

重力加速度比(G-ratio)、过载(Overload)教改最大的特点就是知识与实际相结合,如果在实际生活的体现和应用。 世界一级方程式竞标赛 (F1)...

终极密码学工具箱ToolsFx:30+编码转换与一键解码的完整解决方案

终极密码学工具箱ToolsFx:30编码转换与一键解码的完整解决方案 【免费下载链接】ToolsFx 跨平台密码学工具箱。包含编解码,编码转换,加解密, 哈希,MAC,签名,大数运算,压缩&#xff0…...

Test-Agent:企业级AI测试平台的战略价值与团队转型路径

Test-Agent:企业级AI测试平台的战略价值与团队转型路径 【免费下载链接】Test-Agent Agent that empowers software testing with LLMs; industrial-first in China 项目地址: https://gitcode.com/gh_mirrors/te/Test-Agent 在数字化转型浪潮中,…...