目录

  • 时间管理
    • 延时函数
    • 虚拟定时器

时间管理

As well as running your application code as threads, the RTOS also provides some timing services which can be accessed through RTOS system calls.

RTX提供了一些时间服务,用户可以通过系统调用来使用它们。

延时函数

最常见、最基本的时间服务当然是延时函数了。RTX有两种延时函数:相对延时,绝对延时。

相对延时

void osDelay(uint32_t ticks);  // 相对延时

This call will place the calling thread into the WAIT_DELAY state for the specified number of milliseconds. The timeout value specifies the number of timer ticks until the time delay elapses. The value is an upper bound and depends on the actual time elapsed since the last timer tick.

为什么是相对延时呢?这是相对于绝对时间而言的,也就是说我们传递给osDelay的参数ticks是一个最大值,看下面这个图。

我们通过调用osDelay(2),设置从此刻开始,延时2个SysTicks。理论上来讲,将会延时2个SysTicks。但实际上不是的,这个2本质上表示的是接下来延时直到发生两个时钟中断。所以,如果系统调用的时刻处于一个时钟周期之内,那么实际延时是达不到2个时钟周期的。这也是我们为什么说2个时钟周期是最大的延时时间的原因。

绝对延时

In addition to the osDelay() function which gives a relative time delay starting from the instant it is called, there is also a delay function which halts a thread until a specific point in time:

osStatus osDelayUntil (uint32_t ticks);

具体使用如下:

 void redLight(void* arg)
{while(1){uint64_t ticks = osKernelGetTickCount();  // obtain current Tick countLED1(ON); osDelayUntil(ticks + 100);LED1(OFF);osDelayUntil(ticks + 200);}    }

虚拟定时器

The CMSIS-RTOS API can be used to define any number of virtual timers which act as count down timers. When they expire, they will run a user call-back function to perform a specific action. Each timer can be configured as a one shot or repeat timer.

RTX允许用户创建任何多个虚拟定时器,该定时器是一个向下计数器,且可以设置为一次性或者周期性。简单地说就是我们给该虚拟定时器一个 ticks count和回调函数,每经过一个时钟周期,该数减一。当ticks count 变为0时,就会执行该回调函数。就这么简单~,下面来看一下具体步骤。

1.创建虚拟定时器属性结构体

static const osTimerAttr_t timer0_attr = {.name = "timer0",
};

2.设置回调函数

这里还是以LED灯闪烁为例。

 void redLight(void* arg)
{while(1){LED1(ON); osDelay(100);LED1(OFF);osDelay(100);}    }

3.创建虚拟定时器

函数原型:osTimerNew(&callback,osTimerPeriodic,(void*)<parameter>,&timerAttr_timer0);

osTimerId_t timer0;
// 设置周期性,可用 osTimerPeriodic
timer0 = osTimerNew(&redLight,osTimerOnce,NULL,&timer0_attr);
osTimerStart(timer0,0x1000);

至此,OK啦~,暂时就这么多。

RTX之——时间管理相关推荐

  1. 嵌入式OS入门笔记-以RTX为案例:四.简单的时间管理

    嵌入式OS入门笔记-以RTX为案例:四.简单的时间管理 上一节简单记录了进程task.有了进程以后,我们需要关心怎么样分配CPU资源(或者运行时间)给每个进程.那么就要引入排程(scheduling) ...

  2. 高效时间管理-介绍GTD

    人说在IT公司没有不忙的.你会发现每天RTX要闪烁几十个对话框是再正常不过的事情.可能你正好在写一个ppt,同时领导安排今天必须出一封邮件,刚在酝酿的时候突然还会有人电话催你开会,离开时刚好还有个朋友 ...

  3. 高效时间管理-介绍GTD (Get Thing Done)

    高效时间管理-介绍GTD (Get Thing Done) 2009-05-06 20:46  推荐: P迪  浏览: 436 views  我要评论  字号: 大 中 小 分享到:  QQ空间  新 ...

  4. java redis管理_优雅时间管理Java轻松做到,想学么?

    原标题:优雅时间管理Java轻松做到,想学么? 来源 |http://rrd.me/gCQHp 前言:需求是这样的,在与第三方对接过程中,对方提供了token进行时效性验证,过一段时间token就会失 ...

  5. linux基础篇-02,linux时间管理date hwclock cal 简述

    ################################################ 时间管理 1,date:系统时钟 查看当前系统时间 [root@Jameszhan etc]# dat ...

  6. 出色管理者的时间管理

    出色管理者的时间管理 不少管理者都有这样的感慨:"忙了一天,也不知道忙了什么,时间还不够用."其实,只要有效地运用时间,就可以提高工作效率,在相同的时间里做更多的事,而且做得更好, ...

  7. 你离时间管理大师,就差这副眼镜了

    鱼羊 贾浩楠 发自 凹非寺 量子位 报道 | 公众号 QbitAI 你离时间管理大师,只差这副黑科技眼镜了. 只要249美元--1702元人民币. 最近,这款名为Specs的智能眼镜,出现在了众筹网站 ...

  8. 番茄工作法:番茄时间管理方法与番茄工作法软件图解提高工作效率

    番茄工作法 番茄工作法(又称为:番茄时间管理方法)是简单易行的GTD时间管理方法.番茄工作法是选择一个待办事项任务,将番茄时间设为25分钟,在此期间专注工作.不允许做与该待办事项任务无关的任何事情,直 ...

  9. 说时间不够用,CTO怒了!让我学习:GTD时间管理,番茄工作法,三八理论

    来源| 技术领导力(ID:jishulingdaoli) 01 "三八理论" 你的人生,由第三个8小时决定 时间对每个人来说是公平的,我们都同样拥有24小时.然而,有人取得辉煌成就 ...

最新文章

  1. Yii框架的form处理
  2. java程序设计试题_《Java语言程序设计》期末考试模拟试题——填空题和编程题...
  3. vue中使用checkbox
  4. PHP环境服务器搭建
  5. java如何连接mysql_Java如何连接数据库
  6. “陪护机器人”研报:距离真正“陪护”还差那么一点
  7. java 上下文加载器_【深入理解Java虚拟机 】线程的上下文类加载器
  8. QT信号(signal)和槽(slot)问题
  9. web前端开发和java后端_web前端开发和后端开发的区别是什么
  10. [Slackware13.0学习笔记]上网问题
  11. 3行Python 代码实现图片压缩
  12. Excel教程(8) - 财务函数
  13. IOI2011 Race
  14. 安全须知 百数返校登记助力校园防控工作
  15. crontab:设置计时器
  16. 云台山茶旅集团各分子版块日新月(2月20日)
  17. 【并行计算】OpenMP编程和MPI编程简单教程
  18. 认知安全:安全分析师的超级助手
  19. VQA系列论文(六)
  20. 爱聊语音聊天室为什么用不了摄像头?

热门文章

  1. HTML复选框--checkbox
  2. ES6简介、新特性、Babel编译器、babel-cli工具、babel-polyfill工具(安装和使用)
  3. Win10QQ和QQ音乐可以正常使用,但网页无法打开,并报错DNS_PROBE_POSSIBLE的解决方法
  4. day1-python猜单词游戏
  5. wireshark数据包过滤
  6. 我是如何通过系统架构设计师考试的(2017年软考)
  7. Mina MEID Activator 2.120210512更新使用说明支持三网(移动、联通、电信)国行版手机解锁打电话4G苹果手机激活锁停用Hello密码锁绕ID屏幕锁密码
  8. 清理zabbix监控中磁盘空间不足
  9. 2022(核酸年)结束了
  10. python get方法列表参数_python中requests库get方法带参数请求