CMSIS-RTOS 时间管理之虚拟定时器Virtual Timers

虚拟定时器Virtual Timers

CMSIS-RTOS API里有几个向下计数的虚拟定时器,它们实现计数完成时用户的回调功能。每个定时器都可以配置成单次计数或重复计数模式,它们可以在定义定时器结构体的时候被创建:

osTimerDef(timer0, led_function);

在上面的代码中给定时器定义了一个名字timer0,并同时定义了回调函数led_function,紧接着必须对这个定时器进行实例化:

osTimerId timer0_handle = osTimerCreate(timer(timer0), osTimerPeriodic,(void*)0);

上面的代码创建了这个定时器,并把它定义成周期性定时器(还可以定义成单次定时器–osTimerOnce),最后一个参数0是传递给回调函数的实参,当定时器定时结束时会用的用到。

osTimerStart(timer0_handle, 0x100);

定时器可以在线程的任意位置启动,从上面的代码中可以看到,定时器启动函数使用的是timer0的句柄,并定义了0x100ms的周期定时。

原文地址:https://www.cnblogs.com/zzdbullet/p/9547340.html

时间: 2024-11-01 11:52:10

CMSIS-RTOS 时间管理之虚拟定时器Virtual Timers的相关文章

μC/OS-Ⅲ系统的时间管理函数和定时器

一.时间管理函数 μC/OS-Ⅲ系统提供一些列时间管理服务函数: 1.OSTimeDly():任务延时n个时钟节拍. 2.OSTimeDlyHMSM():任务延时指定的时间,采用“时:分:秒:毫秒”方式指定. 3.OSTimeDlyResume():恢复被延时的任务.注意,一个任务利用这个函数恢复其他函数时,被恢复任务不知道自己是被其他任务恢复,会任务是延时结束而得到恢复.所以此函数要谨慎使用. 4.OSTimeGet():获取当前时钟节拍计数器的值. 5.OSTimeSet():设置时钟节拍计

OSAL之时间管理,软件定时器链表管理

读源码写作,尊重原创: 本博文根据蓝牙4.0, 协议族版本是1.3.2 OSAL的时钟实现在OSAL_CockBLE.c与OSAL_Clock.h两个文件中.OSAL支持完整的UTC(世界统一时间),以2000年1月1日00:00:00为时间起点,可以精确到年.月.日.时.分.秒的时间值. 背景知识 // number of seconds since 0 hrs, 0 minutes, 0 seconds, on the 1st of January 2000 UTC存储自2000年1月1日开

《Linux内核设计与实现》读书笔记(十一)- 定时器和时间管理

系统中有很多与时间相关的程序(比如定期执行的任务,某一时间执行的任务,推迟一段时间执行的任务),因此,时间的管理对于linux来说非常重要. 主要内容: 系统时间 定时器 定时器相关概念 定时器执行流程 实现程序延迟的方法 定时器和延迟的例子 1. 系统时间 系统中管理的时间有2种:实际时间和定时器. 1.1  实际时间 实际时间就是现实中钟表上显示的时间,其实内核中并不常用这个时间,主要是用户空间的程序有时需要获取当前时间, 所以内核中也管理着这个时间. 实际时间的获取是在开机后,内核初始化时

Linux内核——定时器和时间管理

定时器和时间管理 系统定时器是一种可编程硬件芯片.它能以固定频率产生中断.该中断就是所谓的定时器中断.它所相应的中断处理程序负责更新系统时间,还负责执行须要周期性执行的任务. 系统定时器和时钟中断处理程序是Linux系统内核管理机制中的中枢. 另外一个关注的焦点是动态定时器--一种用来推迟运行程序的工具. 比方说.假设软驱马达在一定时间内都未活动,那么软盘驱动程序会使用动态定时器关闭软驱马达. 内核能够动态创建或销毁动态定时器. 内核中的时间观念 内核在硬件的帮助下计算和管理时间. 硬件为内核提

Linux之定时器与时间管理 【转】

转自:http://blog.chinaunix.net/uid-23228758-id-154820.html 定时器与时间管理: 1.节拍率——HZ:在alpha体系结构上1024,而在其它平台上,都为10数量级倍.在嵌入式ARM上为100(2.6内核).这个值的意义是什么呢,也就是在ARM平台上时钟中断100次,为一秒.一般的情况下编程者不要改变这个值,因为内核编很多代码都是有时间要求的,而且内核编写都在很多地方都做了相应的优化与折衷处理,改变HZ的值会对系统的性能有很大的影响. 2.ji

(笔记)Linux内核学习(八)之定时器和时间管理

一 内核中的时间观念 内核在硬件的帮助下计算和管理时间.硬件为内核提供一个系统定时器用以计算流逝的时间.系 统定时器以某种频率自行触发,产生时钟中断,进入内核时钟中断处理程序中进行处理. 墙上时间和系统运行时间根据时钟间隔来计算. 利用时间中断周期执行的工作: 更新系统运行时间: 更新实际时间: 在smp系统上,均衡调度程序中各处理器上运行队列: 检查当前进程是否用尽了时间片,重新进行调度: 运行超时的动态定时器: 更新资源消耗和处理器时间的统计值: 二 节拍率 系统定时器的频率:通过静态预处理

Linux时间管理涉及数据结构和传统低分辨率时钟的实现

上篇文章大致描述了Linux时间管理的基本情况,看了一些大牛们的博客感觉自己写的内容很匮乏,但是没办法,只能通过这种方式提升自己--闲话不说,本节介绍下时间管理下重要的数据结构 设备相关数据结构 //时钟源结构 struct clocksource{} //时钟设备结构 struct tick_device { struct clock_event_device *evtdev; enum tick_device_mode mode;//记录对应时钟事件设备的模式 }; enum tick_de

时间管理(uC/OS-II)

一.时钟节拍 uC/OS-II需要提供周期性信号源,用于实现时间延迟和确认超时.时钟节拍率越高,系统的额外负荷就越重.时钟节拍的实际频率取决于应用程序的精度.时钟节拍可以是专门的硬件定时器,也可以是来自50/60Hz交流电源信号. 注意:必须在多任务系统启动以后,即在调用OSStart()之后,再开启时钟节拍器.调用OSStart()之后应做的第一件事就是初始化定时器中断.通常容易犯的错误是将允许时钟节拍中断放在系统初始化函数OSInit()之后,在启动多任务OSStart()之前. uC/OS

linux下的时间管理概述

2017/6/21 时间这一概念在生活中至关重要,而在操作系统中也同样重要,其在系统中的功能绝不仅仅是给用户提供时间这么简单,内核的许多机制都依赖于时间子系统.但凡是要在某个精确的时间执行某个事件,必然会用到时间子系统.而内核中定时器的发展可以以2.6版本的内核作为一个分界点.之前主要是低分辨率定时器,2.6开发期间便引入了高分辨率定时器.分辨率的高低意味着时间粒度的大小. 本节重点介绍下涉及到的几个重点概念 时钟设备 周期时钟/动态时钟 高分辨率/低分辨率 定时器 时钟设备时钟设备算是最低层的