1.软件定时器管理

uC/OS-III提供了软件定时器服务(相关代码在OS_TMR.C中)。
当设置OS_CFG.H中的OS_CFG_TMR_EN为1时软件定时器服务被
使能。

2.uC/OS-III 定时器的分辨率决定于时基频率,也就是变量
OS_CFG_TMR_TASK_RATE_HZ的值,它是以 Hz为单位的。如果
时基任务的频率设置为 10Hz,所有定时器的分辨率为十分之一秒。
事实上, 这是用于定时器的推荐值。 定时器用于不精确时间尺度的任务。

3.uC/OS-III提供了一些函数用于管理定时器如下:

4.定时器被使用之前必须被创建。通过调用OSTmrCreate(), 并设置

这个函数的相关参数。 一旦定时器的操作模式被设置, 就不能被改动直到定时器被删除并被重新创建。 OSTmrCreate()的原型如下:

一旦定时器被创建,它可以被开始或停止任意次。定时器可以被
设置为3种模式: 一次性定时模式, 无初始定时周期模式( 没有初始的定时),有初始定时周期模式(有初始的定时)。

5.一次性定时模式

正如其名字所表达,定时器会递减被设置初始的定时值,当该值为0时就会调用回调函数并停止定时器。

初始的定时值通过调用OSTmrSrart()设置, 延时期满时, 回调函数被调用( 假定回调函数在定时器创建的时候被提供)。

完成之后,定时器不做任务事情直到调用OSTmrStart()被重新开启。
通过调用OSTmrStop()停止定时器。

6.无初始定时周期模式

当定时器期满时, 回调函数被调用, 定时值被定时周期值重载, 如此周期性地重复。

7.有初始定时周期模式

定时器可以被设置为有初始定延周期模式。 第一周期的递减值由OSTmrCreate()中的参数"dly"设置,以后的重载值由"period"值确定。调用OSTmrStart()重新开始。

 

8.内部定时器管理

(1).内部定时器管理-定时器状态

任务调用OSTmrStateGet()获得定时器的状态。 当然, 也可以调用
OSTmrRemainGet()获得剩余定时时间。定时值是以时基为单位的。

如果定时器被停止, 那其定时值也将被停止, 直到定时器被恢复时,定时器值继续被定时器任务递减。

(2).定时器内部管理——OS_TMR

定时器是 uC/OS-III中的内核对象,其数据类型为 OS_TMR(见
OS.H)。

uC/OS-III中管理定时器的相关代码在文件OS_TMR.C中。在编译
时通过设置 OS_CFG.H中的 OS_CFG_TMR_EN为 1开启定时器功
能。

(3).内部定时器管理——定时器任务

OS_TmrTask()是一个周期性的任务,它使用时基中断源作为它的时钟计数源。然而,定时器通常产生较低的周期信号(可以为10Hz等)。

它的周期信号是从时基信号中分频得来的。如果时基频率为1000Hz,定时器想要的频率为10Hz,

那么定时器任务需被设置为每100个时基产生一次信号,也就是分频值为100。

通过设置 OS_CFG.H中的 OS_CFG_TMR_EN为 1使能定时器任
务 OS_TmrTask(),该任务的优先级通过 OS_CFG_APP.H 中的
OS_CFG_TMR_TASK_PRIO设置。 OS_TmrTask()的优先级通常被设
置为中等大小。

定时器管理任务的相关运行情况:

 

(4)内部定时器管理——定时器列表

有些情况下, uC/OS-III可能要维护上百个定时器。使用定时器列表
会大大降低更新定时器列表所占用的 CPU时间。定时器列表类似于
时基列表.

 

通过调用 OSTmrStart()将定时器插入到定时器列表中。然而,定
时器必须在被使用之前被创建。

6.0-uC/OS-III软件定时器管理的更多相关文章

  1. uc/os iii移植到STM32F4---IAR开发环境

    也许是先入为主的原因,时钟用不惯Keil环境,大多数的教程都是拿keil写的,尝试将官方的uc/os iii 移植到IAR环境. 1.首先尝试从官网上下载的官方移植的代码,编译通过,但是执行会报堆栈溢 ...

  2. uC/OS - III 移植 IAR平台

    关于移植uC/OS-III 网上已经有很多教程了此处只是做个记录 首先下载源码然后解压得到下面的文件: 然后在模版工程里新建各种文件夹: 最后全部都添加进工程: OK了,编译一下,惊呆了,竟然 0错误 ...

  3. uC/OS-III 软件定时器(三)

    软件定时器是uC/OS 操作系统的一个内核对象,软件定时器是基于时钟节拍和系统管理创建的软件性定时器,理论上可以创建无限多个,操作简单,但精准度肯定比硬件定时稍逊一筹. 原理和实现过程 要用到的函数: ...

  4. 6.1-uC/OS-III软件定时器

    1.软件定时器是 uC/OS 操作系统的一个内核对象,软件定时器是基于时钟节拍和系统管理创建的软件性定时器,理论上可以创建无限多个,但精准度肯定比硬件定时稍逊一筹. 2.软件定时器启动之后是由软件定时 ...

  5. 【STM32H7教程】第22章 STM32H7的SysTick实现多组软件定时器

    完整教程下载地址:http://forum.armfly.com/forum.php?mod=viewthread&tid=86980 第22章       STM32H7的SysTick实现 ...

  6. 【TencentOS tiny】深度源码分析(8)——软件定时器

    软件定时器的基本概念 TencentOS tiny 的软件定时器是由操作系统提供的一类系统接口,它构建在硬件定时器基础之上,使系统能够提供不受硬件定时器资源限制的定时器服务,本质上软件定时器的使用相当 ...

  7. ESP8266_04管脚控制与软件定时器

    ESP8266_04管脚控制与软件定时器 from :https://mp.weixin.qq.com/s/APawDx4io4gKJyOeuErTLA 原创: MCU启航 单片机爱好者 今天 这一节 ...

  8. uC/OS II原理分析及源码阅读(一)

    uC/OS II(Micro Control Operation System Two)是一个可以基于ROM运行的.可裁减的.抢占式.实时多任务内核,具有高度可移植性,特别适合于微处理器和控制器,是和 ...

  9. 基于μC/OS—III的CC1120驱动程序设计

    基于μC/OS—III的CC1120驱动程序设计 时间:2014-01-21 来源:电子设计工程 作者:张绍游,张贻雄,石江宏 关键字:CC1120   嵌入式操作系统   STM32F103ZE   ...

随机推荐

  1. vue-router2.x使用入门

    组件中的路由 <router-link to=""></router-link> 无参数 <router-link to="/ar/1&qu ...

  2. invalid active developer path (/Library/Developer/CommandLineTools), missing xcrun at: /Library/Developer/CommandLineTools/usr/bin/xcrun

    Mac系统升级git会找不到并且报错:xcrun: error: invalid active developer path (/Library/Developer/CommandLineTools) ...

  3. tensorflow 笔记12:函数区别:placeholder,variable,get_variable,参数共享

    一.函数意义: 1.tf.Variable() 变量 W = tf.Variable(<initial-value>, name=<optional-name>) 用于生成一个 ...

  4. 在interface vlan下敲no ip proxy-arp什么意思

    取消由路由带来的ARP请求. proxy ARP有哪些优点? 最主要的一个优点就是能够在不影响其他router的路由表的情况下在网络上添加一个新的router,这样使得子网的变化对主机是透明的 pro ...

  5. 【iCore1S 双核心板_FPGA】例程十七:基于双口RAM的ARM+FPGA数据存取实验

    实验现象: 核心代码: module DUAL_PORT_RAM( input CLK_12M, inout WR, input RD, input CS0, :]A, :]DB, output FP ...

  6. ASCII码与unicode字符集

    问题1:为什么需要字符ASCII码.unicode码等等???它们到底有什么作用? 首先要明白一个事实:在计算机中只能用一系列存储着的0和1,当我们把一个字符存放在计算机时,我们是如何表示常用的字符呢 ...

  7. Netty HTTP 服务端入门开发

    一. HTTP 简介 HTTP(超文本传输协议) 协议是建立在 TCP 传输协议之上的应用层协议,它的发展是万维网协会和 Internet 工作小组和 IETF 合作的结果. HTTP 是一个属于应用 ...

  8. Java8学习笔记目录

    Java8学习笔记(一)--Lambda表达式 Java8学习笔记(二)--三个预定义函数接口 Java8学习笔记(三)--方法引入 Java8学习笔记(四)--接口增强 Java8学习笔记(五)-- ...

  9. 蜕变成蝶~Linux设备驱动之中断与定时器

    “我叮咛你的 你说 不会遗忘 你告诉我的 我也全部珍藏 对于我们来说 记忆是飘不落的日子 永远不会发黄 相聚的时候 总是很短 期待的时候 总是很长 岁月的溪水边 捡拾起多少闪亮的诗行 如果你要想念我  ...

  10. IntelliJ IDEA License Server 安装使用 Mac篇

    一.下载 IntelliJ IDEA 是Java开发利器,用社区版不爽,干催就用旗舰版,这个是收费的,需要licence.  IntelliJ IDEA下载地址:https://www.jetbrai ...