HarmonyOS系统中内核定时器的实现

简介: 大家好,今天主要和大家聊一聊,如何使用HarmonyOS系统中的定时器。

5bac19aae491461aae77eb3350460842.png

第一:定时器基本简介

内核定时器是内核用来控制在未来某个时间点(基于jiffies)调度执行某个函数的一种机制,其实现位于 <linux/timer.h> 和 kernel/timer.c 文件中。被调度的函数肯定是异步执行的,它类似于一种“软件中断”,而且是处于非进程的上下文中。

第二:Timer API函数分析

 osTimerNew()

osTimerId_t osTimerNew  (osTimerFunc_t func,osTimerType_t type,void *argument,const osTimerAttr_t *attr)

功能实现描述:

   函数osTimerNew创建一个一次性或周期性计时器,并将其与一个带参数的回调函数相关联。计时器在osTimerStart启动之前一直处于停止状态。可以在RTOS启动(调用osKernelStart)之前安全调用该函数,但不能在内核初始化 (调用 osKernelInitialize)之前调用该函数。

    注意:不能在中断服务中调用该函数

参数:

名字 描述
func 函数指针指向回调函数.

type 定时器类型,osTimerOnce表示单次定时器,osTimerPeriodic周期表示周期性定时器

argument 定时器回调函数的参数

attr 计时器属性

  osTimerStart()


osStatus_t osTimerStart (osTimerId_t timer_id,uint32_t ticks)

   功能描述:


   函数osTimerStart启动或重新启动指定参数timer_id的计时器。参数ticks指定计时器的计数值。


   注意:不能在中断服务调用该函数

参数:

名字 描述

timer_id 由osTimerNew获得的计时器ID.

ticks 时间滴答计时器的值.

第三:软件设计

   主要代码分析

在Timer_example函数中,通过osTimerNew()函数创建了回调函数为Timer1_Callback的定时器1,并通过osTimerStart()函数将该定时器设置为100个tick,因为hi3861默认10ms为一个tick,所以100个tick正好为1S钟,1S计时到后会触发Timer1_Callback()函数并打印日志。定时器2也同理为3S触发Timer2_Callback()函数并打印日志

void Timer_example (void) {
    osTimerId_t id1, id2;                         // timer id
    uint32_t    timerDelay;                       // timer value
    osStatus_t  status;                           // function return status
    // Create periodic timer
    exec1 = 1U;
    id1 = osTimerNew(Timer1_Callback, osTimerPeriodic, &exec1, NULL);
    if (id1 != NULL)  {
        timerDelay = 100U;                            // Hi3861 1U=10ms,100U=1S
        status = osTimerStart(id1, timerDelay);       // start timer
        if (status != osOK) {
        // Timer could not be started
        }
    }
    // Create periodic timer
    exec2 = 1U;
    id2 = osTimerNew(Timer2_Callback, osTimerPeriodic, &exec2, NULL);
    if (id2 != NULL)  {
        timerDelay = 300U;                            // Hi3861 1U=10ms,300U=3S
        status = osTimerStart(id2, timerDelay);       // start timer
        if (status != osOK) {
        // Timer could not be started
        }
    }
}

第四:编译与调试

修改BUILD.gn文件

修改applications\BearPi\BearPi-HM_Nano\sample路径下 BUILD.gn 文件,指定 timer_example 参与编译。

#"A1_kernal_thread:thread_example",
"A2_kernel_timer:timer_example",
#"A3_kernel_event:event_example",
#"A4_kernel_mutex:mutex_example",
#"A5_kernel_semaphore:semaphore_example",
#"A6_kernel_message:message_example",

第五:运行结果

   示例代码编译烧录代码后,按下开发板的RESET按键,通过串口助手查看日志,Timer1_Callback会1S打印一次数据,Timer2_Callback会3S打印一次数据。

This is BearPi Harmony Timer1_Callback!
This is BearPi Harmony Timer1_Callback!
This is BearPi Harmony Timer1_Callback!
This is BearPi Harmony Timer2_Callback!
This is BearPi Harmony Timer1_Callback!
This is BearPi Harmony Timer1_Callback!
This is BearPi Harmony Timer1_Callback!
This is BearPi Harmony Timer2_Callback!

总结:HarmonyOS系统中的定时器使用方法和Linux系统中的定时器比较相似。

目录
相关文章
|
10月前
|
定位技术 开发工具
【HarmonyOS】鸿蒙应用实现调用系统地图导航或路径规划
【HarmonyOS】鸿蒙应用实现调用系统地图导航或路径规划
517 5
【HarmonyOS】鸿蒙应用实现调用系统地图导航或路径规划
|
11月前
|
Linux 编译器 Android开发
鸿蒙系统被抹黑的深层解析:技术、商业与地缘政治的复杂博弈-优雅草卓伊凡
鸿蒙系统被抹黑的深层解析:技术、商业与地缘政治的复杂博弈-优雅草卓伊凡
580 1
鸿蒙系统被抹黑的深层解析:技术、商业与地缘政治的复杂博弈-优雅草卓伊凡
|
10月前
|
安全 开发工具 数据安全/隐私保护
HarmonyOS应用安全全攻略:从系统到代码的全面防护
本文全面解析HarmonyOS应用安全开发,涵盖系统到代码的防护策略。首先介绍HarmonyOS三层安全体系:系统安全层、开发工具层与应用生态层。接着详解设备与数据安全等级划分,提供分级加密实战代码,包括文件读写与HUKS高级加密案例。最后总结开发最佳实践,强调数据分类、最小权限、加密常态及传输安全保障,助你构建更安全的应用。保护用户数据不仅是功能需求,更是开发者责任!
|
8月前
|
移动开发 网络协议 小程序
鸿蒙NEXT即时通讯/IM系统RinbowTalk v2.4版发布,基于MobileIMSDK框架、ArkTS编写
RainbowTalk是一套基于开源即时通讯讯IM框架 MobileIMSDK 的产品级鸿蒙NEXT端IM系统。纯ArkTS编写、全新开发,没有套壳、也没走捷径,每一行代码都够“纯血”。与姊妹产品RainbowChat和RainbowChat-Web 技术同源,历经考验。
334 1
|
9月前
|
缓存 移动开发 网络协议
纯血鸿蒙NEXT即时通讯/IM系统:RinbowTalk正式发布,全源码、纯ArkTS编写
RainbowTalk是一套基于MobileIMSDK的产品级鸿蒙NEXT端IM系统,目前已正式发布。纯ArkTS、从零编写,无套壳、没走捷径,每一行代码都够“纯”(详见:《RainbowTalk详细介绍》)。 MobileIMSDK是一整套开源IM即时通讯框架,历经10年,超轻量级、高度提炼,一套API优雅支持 UDP 、TCP 、WebSocket 三种协议,支持 iOS、Android、H5、标准Java、小程序、Uniapp、鸿蒙NEXT,服务端基于Netty编写。
666 1
|
12月前
|
安全 Linux 测试技术
对鸿蒙 Next 系统“成熟论”的深度剖析-优雅草卓伊凡
对鸿蒙 Next 系统“成熟论”的深度剖析-优雅草卓伊凡
247 10
对鸿蒙 Next 系统“成熟论”的深度剖析-优雅草卓伊凡
|
人工智能 物联网 Android开发
【03】优雅草星云物联网AI智控系统从0开发鸿蒙端适配-deveco studio-在lib目录新建自定义库UtilsLibrary,ComponentLibrary,CommonConstLibrary完成设置SettingsView.ets初始公共类书写-优雅草卓伊凡
【03】优雅草星云物联网AI智控系统从0开发鸿蒙端适配-deveco studio-在lib目录新建自定义库UtilsLibrary,ComponentLibrary,CommonConstLibrary完成设置SettingsView.ets初始公共类书写-优雅草卓伊凡
599 23
【03】优雅草星云物联网AI智控系统从0开发鸿蒙端适配-deveco studio-在lib目录新建自定义库UtilsLibrary,ComponentLibrary,CommonConstLibrary完成设置SettingsView.ets初始公共类书写-优雅草卓伊凡
|
11月前
|
人工智能 运维 监控
HarmonyOS NEXT~鸿蒙系统运维:全面解析与最佳实践
本书《HarmonyOS NEXT~鸿蒙系统运维:全面解析与最佳实践》深入探讨了鸿蒙系统的运维管理。从架构特点到实际操作,涵盖分布式能力、性能优化、安全维护及故障排查。内容包括设备管理、系统监控、安全管理等核心任务,提供常见问题解决方案与工具推荐。面对未来超级终端和AI赋能的挑战,运维人员需不断学习,以充分发挥鸿蒙的分布式优势,为用户带来流畅体验。
800 8
|
10月前
|
开发工具 数据安全/隐私保护 开发者
打造鸿蒙系统中最好用的加载动画和提示弹窗
幽蓝君开发了鸿蒙平台的轻量级弹窗工具 yloadinghud,旨在实现简洁优雅的提示交互。无需在每个页面重复初始化,只需一行代码即可展示加载动画或提示弹窗。支持多种类型,如成功、失败提示及文字弹窗,且具备自动消失功能,使用便捷。项目已上传至 ohpm 仓库,欢迎搜索体验并提出宝贵建议。#三方SDK #工具效率
|
11月前
|
JavaScript 前端开发 Java
HarmonyOS NEXT~鸿蒙系统下的Cordova框架应用开发指南
《HarmonyOS NEXT:鸿蒙系统下的Cordova框架应用开发指南》详细介绍如何将Cordova应用适配到鸿蒙系统。文章涵盖兼容性分析、环境配置、特性适配、性能优化及发布调试等内容。尽管Cordova官方暂无直接支持,但通过Cordova-Android平台与定制插件可实现功能扩展。开发者需注意性能差异,并借助插件机制融入鸿蒙特色功能,如服务卡片和分布式能力。未来,随着鸿蒙生态完善,Cordova在该平台的应用将更加广泛且高效。
910 1

热门文章

最新文章