【样例实战】基于HarmonyOS鸿蒙Next物联网套件开发样例--软定时器

【样例实战】基于HarmonyOS鸿蒙Next物联网套件开发样例–软定时器

工欲善其事必先利其器,支持HarmonyOS的HiSpark WiFi-IoT开发套件

华丽亮相:
首发于HDC 2020

行业地位:
首批支持HarmonyOS的开发套件

官方推荐:
HarmonyOS官方推荐套件

量身打造:
润和软件HiHope量身打造

应用广泛:
HarmonyOS社区和广大HarmonyOS开发者中拥有广泛粉丝哦,快来加入HiSpark WiFi-IoT套件开发者大家庭。

【HiSpark系列】

Pegasus智能家居开发套件

基于海思Hi3861V100芯片,支持HarmonyOS
主控为WiFi SOC Hi3861,160MHz主频,SRAM 352KB,ROM 288KB,2M Flash。
1个主板、6个扩展版,支持多功能、多应用开发。
通用底板,降低开发难度,提升开发自主性。
板载NFC,实现HarmonyOS"碰一碰"。

套件详情可参考支持HarmonyOS的物联网套件Pegasus智能家居开发套件介绍

今天跟大家分享HiSpark WiFi-IoT 套件样例开发----软定时器(Timer)

一、Timer API

API名称 说明
osTimerNew 创建和初始化定时器
osTimerGetName 获取指定的定时器名字
osTimerStart 启动或者重启指定的定时器
osTimerStop 停止指定的定时器
osTimerIsRunning 检查一个定时器是否在运行
osTimerDelete 删除定时器

osTimerNew()

osTimerId_t osTimerNew (osTimerFunc_t func, osTimerType_t type, void *argument, const osTimerAttr_t *attr)
参数:
名字 描述
func 定时器回调函数.
type 定时器类型,osTimerOnce表示单次定时器,ostimer周期表示周期性定时器.
argument 定时器回调函数的参数
attr 定时器属性

二、代码分析

定时器的回调函数

void cb_timeout_periodic(void *arg) {
    (void)arg;
    times++;
}

使用osTimerNew创建一个100个时钟周期调用一次回调函数cb_timeout_periodic定时器,每隔100个时钟周期检查一下全局变量times是否小于3,若不小于3则停止时钟周期

void timer_periodic(void) {
    osTimerId_t periodic_tid = osTimerNew(cb_timeout_periodic, osTimerPeriodic, NULL, NULL);
    if (periodic_tid == NULL) {
        printf("[Timer Test] osTimerNew(periodic timer) failed.\r\n");
        return;
    } else {
        printf("[Timer Test] osTimerNew(periodic timer) success, tid: %p.\r\n", periodic_tid);
    }
    osStatus_t status = osTimerStart(periodic_tid, 100);
    if (status != osOK) {
        printf("[Timer Test] osTimerStart(periodic timer) failed.\r\n");
        return;
    } else {
        printf("[Timer Test] osTimerStart(periodic timer) success, wait a while and stop.\r\n");
    }
    while(times < 3) {
        printf("[Timer Test] times:%d.\r\n", times);
        osDelay(100);
    }
    status = osTimerStop(periodic_tid);
    printf("[Timer Test] stop periodic timer, status :%d.\r\n", status);
    status = osTimerDelete(periodic_tid);
    printf("[Timer Test] kill periodic timer, status :%d.\r\n", status);
}

三、如何编译

  1. 将此目录下的timer.cBUILD.gn复制到源码的应用程序目录下,

  2. 修改源码的applications\sample\wifi-iot\app\BUILD.gn文件,将其中的features改为:

features = [
    "iothardware:timer_demo",
]
  1. 在源码顶层目录执行:

四、运行结果

[Timer Test] osTimerNew(periodic timer) success, tid: 0xe9b4c.
[Timer Test] osTimerStart(periodic timer) success, wait a while and stop.
[Timer Test] times:0.
[Timer Test] times:1.
[Timer Test] times:2.
[Timer Test] stop periodic timer, status :0.
[Timer Test] kill periodic timer, status :0.

五、相关资料获取

点击生态市场官方店铺-润和芯片社区,即刻下单!

已上线本开发套件专题指导教程《基于OpenHarmony 物联网应用开发实战》,点击了解详情!

1 回复

更多关于【样例实战】基于HarmonyOS鸿蒙Next物联网套件开发样例--软定时器的实战系列教程也可以访问 https://www.itying.com/category-93-b0.html


在HarmonyOS鸿蒙Next物联网套件中,软定时器(Soft Timer)是一种基于软件实现的定时功能,适用于需要周期性任务或延时操作的场景。开发者可通过SoftTimer API创建、启动、停止和删除定时器。例如,初始化一个定时器并设置回调函数,当定时时间到达时,系统会自动调用回调函数执行指定任务。软定时器资源占用少,适合在资源受限的物联网设备上使用,如传感器数据采集、设备状态检测等。通过合理配置,可有效提升系统响应效率和资源利用率。

回到顶部
AI 助手
你好,我是IT营的 AI 助手
您可以尝试点击下方的快捷入口开启体验!