uC/OS-III-11.0-uC/OS-III软件定时器

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()将定时器插入到定时器列表中。然而,定
时器必须在被使用之前被创建。

原文地址:https://www.cnblogs.com/xigongxiaosha/p/9385458.html

时间: 2024-07-31 21:44:52

uC/OS-III-11.0-uC/OS-III软件定时器的相关文章

Quartus II 11.0 开始使用

一.Altera Quartus II 11.0套件介绍 所谓巧妇难为无米之炊,再强的软硬件功底,再多的思维创造力,没有软件的平台,也只是徒劳.因此,一切创造的平台——Quartus II 软件安装,由零开启的世界,便从此开始. 自从Bingo 2009年开始接触FPGA,Quartus II 版本的软件从n年前的5.1版本到今天的最新发布的11.0,都使用过:当然对于软件核心构架而言,万变不离其宗.虽然多多少少有点bug,但这10多个版本发展到了现在,能看到Altera一直在努力,致力于更完美

Windows下虚拟机安装Mac OS X —– VM12安装Mac OS X 10.11

______________________________________________________________________________________________________________________________________________________________________________________________________________________ 注:本文来源:csdn:N的专栏.<Windows下虚拟机安装Mac

VMware Workstation 11 安装MAC OS X 10.10 Yosemite(14B25)图解 2015-01-13 12:26:01|

VMware Workstation 11 安装MAC OS X 10.10 Yosemite(14B25)图解 2015-01-13 12:26:01|  分类: 网络互联 |  标签:10.10  yosemite  vmware  |举报|字号 订阅 http://lbq20042002.blog.163.com/blog/static/8235302015013111858664/ 下载LOFTER我的照片书  | VMware Workstation 11 安装MAC OS X 10.

Windows下VMware12 安装mac os 10.11系统

因为公司要用到苹果系统管理自己的app,但是公司又没配苹果电脑,只好用虚拟机搞个系统来用了.自己也是搞了好久,在网上找了各种方法,终于搞定了.都是在网上找的别人的方法,现在我整理一下. 1.首先说一下要下载的东西:VMware workstation 12, mac os 10.11系统镜像文件, unlocker208文件. 首先下载安装vmware12 软件,先不忙运行软件. 2.下载解压unlocker208文件,找到win-install.cmd运行.这一步很重要,否则vm无法识别os系

Mac OS X 11中的/usr/bin 的“Operation not permitted”

更新了 Mac OS X 11后发现,MacVim 不再能够通过Terminal用命令打开了. mvim hello.txt 于是尝试将 mvim 重新复制到/usr/bin/中去 sudo cp -f mvim /usr/bin/ 然而出现了权限问题: cp: /usr/bin/mvim: Operation not permitted 搜索之后发现,是El Capitan 加入了Rootless机制,不再能够随心所欲的读写很多路径下了.设置 root 权限也不行. Rootless机制将成为

Sailfish OS 2.1.0 发布,带来重大的架构变化

Sailfish OS 2.1.0 Iijoki 发布了. Iijoki通过引入Qt 5.6 UI框架.BlueZ 5 蓝牙堆栈和 64 位架构的基本实现,为Sailfish操作系统带来了重大的架构变化,它还带来了更快的快门速度,初始支持虚拟专用网络(VPN)将UI字体放大到不同的级别,并且修复了社区报告的大量的bug和错误. 完整更新内容请点击更新日志和发行说明. http://www.oschina.net/news/81813/sailfish-2-1-0

MAC OS 10.11.1虚拟机免费下载已安装Xcode7图片后有下载地址

注意:已经下载过MAC OS 10.10.5虚拟机免费下载(可安装Xcode7)链接: http://my.oschina.net/u/1585857/blog/504837 的童鞋可以自行通过appstore升级,图片是大部分的升级过程.对于Xcode有疑问的可以参照本帖进行验证:http://my.oschina.net/u/1585857/blog/511252 MAC OS 10.11.1虚拟机免费下载已安装Xcode7下载地址:链接:http://pan.baidu.com/s/1c0

mac os x10.11.2系统eclipse无法读取环境变量的问题

eclipse调试Android自动化脚本的时候一直无法找到adb,遇到这么坑的问题,折腾死了,记录一下. mac os x10.11.2系统GUI程序(eclipse)无法读取~/.bash_profile下配置的环境变量. 需要用终端open /User/sun/tools/eclipse/eclipse启动,才会加载环境变量,手动启动则不加载.

解决 Mac OS X 11无法copy文件问题

1.升级Mac OS X 11之后,想要copy文件到系统目录下. sudo cp -f test.txt /usr/bin/ 2.发现即使用权限sudo,也有权限问题. cp: /usr/bin/test: Operation not permitted 3.原因是升级Mac OS X 11之后El Capitan 加入了Rootless机制,不再能在随便编辑更何路径了,即使设置 root 权限也不可以. ps:Rootless机制是用来抵抗恶意程序的. 4.bin目录下的拷贝需要关闭Root

(11)-Python3之--os模块

1.模块介绍 os模块是路径处理模块,它提供了多数操作系统的功能接口函数.当os模块被导入后,它会自适应于不同的操作系统平台,根据不同的平台进行相应的操作,在python编程时,经常和文件.目录打交道,所以离不了os模块.如果你希望你的程序能够与平台无关的话,这个模块是尤为重要的. 2.os.getcwd()--获取当前工作空间 import os # 获取当前的工作路径 workspace = os.getcwd() # os模块下的getcwd函数 print(workspace) 结果: