ToB企服应用市场:ToB评测及商务社交产业平台

标题: 鸿蒙小车之软件定时器实验 [打印本页]

作者: 勿忘初心做自己    时间: 2024-10-1 13:50
标题: 鸿蒙小车之软件定时器实验
说到鸿蒙我们都会想到华为mate60:遥遥领先!我们一直领先!
我们这个小车也是采用的是鸿蒙操纵系统,学习鸿蒙小车,让你遥遥领先于你的同砚。
  
  
前言


一、什么是软件定时器?

   软件定时器就是"闹钟",你可以设置闹钟:
在30分钟后让你起床工作。
每隔1小时让你例行查抄呆板运行环境。
  软件定时器也可以完成两类事变:
日常生存中我们可以定无数个"闹钟",这无数的"闹钟"要基于一个真实的闹钟。
在鸿蒙操纵系统里,我们也可以设置很多个"软件定时器",它们都是基于系统滴答中断(Tick
Interrupt)。
二、软件定时器的特性

我们在手机上添加闹钟时,需要指定时间、指定范例(一次性的,还是周期性的)、指定做什么事;另有一些过时的、不再利用的闹钟。如下图所示:

利用定时器跟利用手机闹钟是类似的,例如:
指定时间:启动定时器和运行回调函数,两者的隔断被称为定时器的周期(period)。
指定范例,定时器有两种范例
实际的闹钟分为:有用、无效两类。软件定时器也是类似的,它由两种状态
定时器运行环境示例如下:


三、软件定时器相关函数用法

1. 创建软件定时器

  1. osTimerId_t osTimerNew(osTimerFunc_t func, osTimerType_t type, void *argument,
  2. const osTimerAttr_t *attr);
复制代码
相关参数:


2. 开启软件定时器

  1. osStatus_t osTimerStart(osTimerId_t timer_id, uint32_t millisec);
复制代码
相关参数:

在 Hi3861 中,1U=10ms,100U=1S。

四、软件定时器实验

该实验代码会创建一个周期性定时器和一个一次性定时器:
  1. //包含头文件,头文件中有需要使用到的函数
  2. #include <stdio.h>
  3. #include <unistd.h>
  4. #include "ohos_init.h"
  5. #include "cmsis_os2.h"
  6. osTimerId_t TimerPeriod_ID;//周期性定时器ID
  7. osTimerId_t TimerOnce_ID;//一次性定时器ID
  8. //周期定时器回调函数
  9. void TimerPeriodFun (void *argument)
  10. {
  11.         printf("entry TimerPeriod callback\n");
  12. }
  13. //一次性定时器回调函数
  14. void TimerOnceFun (void *argument)
  15. {
  16.         printf("entry TimerOnce callback\n");
  17. }
  18. // 入口函数
  19. static void entry(void)
  20. {
  21.         //创建周期性定时器
  22.         TimerPeriod_ID = osTimerNew(TimerPeriodFun, osTimerPeriodic, NULL, NULL);
  23.         //创建一次性定时器
  24.         TimerOnce_ID = osTimerNew(TimerOnceFun, osTimerOnce, NULL, NULL);
  25.        
  26.         //开启周期性定时器,每间隔3s调用一次回调函数
  27.         osTimerStart(TimerPeriod_ID, 300U);
  28.         //开启一次性定时器,间隔1s调用一次回调函数,后续不再调用
  29.         osTimerStart(TimerOnce_ID, 100U);
  30. }
  31. SYS_RUN(entry);//声明入口函数
复制代码

总结

下一篇文章继承为各人介绍 鸿蒙小车内核的互斥锁和信号量实验。

免责声明:如果侵犯了您的权益,请联系站长,我们会及时删除侵权内容,谢谢合作!更多信息从访问主页:qidao123.com:ToB企服之家,中国第一个企服评测及商务社交产业平台。




欢迎光临 ToB企服应用市场:ToB评测及商务社交产业平台 (https://dis.qidao123.com/) Powered by Discuz! X3.4