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系统中的定时器比较相似。

目录
相关文章
|
6月前
|
编解码
如何让开源鸿蒙系统适配其它机型?
如何让开源鸿蒙系统适配其它机型?
122 0
|
1天前
|
JavaScript 前端开发 物联网
「Mac畅玩鸿蒙与硬件1」鸿蒙开发环境配置篇1 - 认识鸿蒙系统与开发工具
本篇将介绍鸿蒙操作系统(HarmonyOS)的基本概念以及在 Mac 环境下进行鸿蒙开发所需的工具。通过了解鸿蒙系统和开发工具的特点,为后续的学习和实践奠定基础。
16 1
「Mac畅玩鸿蒙与硬件1」鸿蒙开发环境配置篇1 - 认识鸿蒙系统与开发工具
|
8天前
|
存储 数据管理 调度
HarmonyOS架构理解:揭开鸿蒙系统的神秘面纱
【10月更文挑战第21天】华为的鸿蒙系统(HarmonyOS)以其独特的分布式架构备受关注。该架构包括分布式软总线、分布式数据管理和分布式任务调度。分布式软总线实现设备间的无缝连接;分布式数据管理支持跨设备数据共享;分布式任务调度则实现跨设备任务协同。这些特性为开发者提供了强大的工具,助力智能设备的未来发展。
38 1
|
25天前
|
安全 物联网 大数据
基于开元鸿蒙(OpenHarmony)的【智能药房与药品管理综合应用系统
基于开元鸿蒙(OpenHarmony)的【智能药房与药品管理综合应用系统
61 8
|
25天前
|
传感器 监控 算法
基于开源鸿蒙(OpenHarmony)的【智能家居综合应用】系统
基于开源鸿蒙(OpenHarmony)的【智能家居综合应用】系统
71 6
|
25天前
|
传感器 人工智能 监控
【基于开源鸿蒙(OpenHarmony)的智慧农业综合应用系统】
【基于开源鸿蒙(OpenHarmony)的智慧农业综合应用系统】
77 6
|
25天前
|
搜索推荐 物联网 开发工具
基于OpenHarmony(开源鸿蒙)的智慧医疗综合应用系统
基于OpenHarmony(开源鸿蒙)的智慧医疗综合应用系统
66 5
|
5月前
|
网络协议 安全 调度
阿里云公共DNS发布支持鸿蒙系统版的SDK
阿里云公共DNS发布支持鸿蒙系统版SDK,赋能鸿蒙开发者快速接入阿里云公共DNS服务。公共DNS将帮助接入的鸿蒙应用免除LocalDNS劫持困扰、解析加速、精准调度。
|
6月前
|
Android开发
【通讯录教程】苹果安卓鸿蒙系统通用,如何大批量导入手机号码到手机的通讯录,下面教你方法,只需1分钟搞定几万个号码的导入手机电话本
该文介绍了一种快速批量导入手机通讯录的方法,适用于处理大量手机号的需求,如微商管理、客户资料整理等。在QQ同步助手开始收费后,提供了免费的替代方案。步骤包括:下载批量导入软件(链接提供腾讯云盘和百度网盘地址),清空通讯录(非必需),制作符合格式的通讯录文件,并按操作系统(苹果、安卓或鸿蒙)进行导入。整个过程只需1分钟,简便快捷。
430 2

热门文章

最新文章