RTX——第17章 定时器组
以下内容转载自安富莱电子: http://forum.armfly.com/forum.php
本章节为大家讲解 RTX 支持的定时器组,或者叫软件定时器,或者叫用户定时器均可。软件定时器的
功能比较简单,也容易掌握。 被称为定时器组是因为用户可以创建多个定时器,创建的个数是可配置的。
定时器组介绍
RTX 提供的定时器功能仅支持单次定时器,也就是用户创建了定时器并启动了定时器后,定时时间到
将不再重新执行,此定时器会被删除掉并且就执行一次,下次使用要重新的创建,这个就是单次定时器的
含义。 另外就是单次定时时间到后会调用定时器的回调函数,用户可以回调函数中加入需要执行的工程代
码。
使用此定时器组注意以下问题:
定时器回调函数 os_tmr_call 在文件 RTX_Conf_CM.c 文件中。
定时器回调函数 os_tmr_call 中仅支持 isr_开头的系统函数,os_开头的不支持,因为回调函数是在滴
答定时器中断中执行的。
RTX 的定时器仅支持单次,不支持周期性执行,如果需要周期执行,需要重复创建。
可以创建的定时器个数可以在 RTX 配置向导中设置:
定时器组 API 函数
使用如下 3 个函数可以实现 RTX 的定时器组:
os_tmr_create
os_tmr_kill
os_tmr_call
函数 os_tmr_create
函数原型:
OS_ID os_tmr_create (
U16 tcnt, /* 定时器的时钟节拍个数 */
U16 info ); /* 定时器回调函数的参数,可用于区分不同的定时器 */
函数描述:
函数 os_tmr_create 用于创建定时器组并启动定时器,定时时间到后调用回调函数 os_tmr_call。函数
os_tmr_create 的第二个参数也会传递给回调函数 os_tmr_call 用于区分不同的定时器。
第 1 个参数填写定时器的时钟节拍个数。 范围 0-0xFFFF。
第 2 个参数填写回调函数的参数,可用于区分不同的定时器。
定时器创建成功的话会返回定时器的 ID 标识,失败的话返回 NULL。
函数 os_tmr_call
函数原型:
void os_tmr_call (
U16 info ); /*定时器回调函数的参数,可用于区分不同的定时器*/
函数描述:
当函数 os_tmr_create 设置的定时时间到后调用回调函数 os_tmr_call。函数 os_tmr_create 的第二个参
数也会传递给回调函数 os_tmr_call 用于区分不同的定时器。此函数执行完毕后,通过函数 os_tmr_create
创建的定时器会被删除,下次使用需要重新创建。
此函数的参数不需要用户去添加,系统会自动将函数 os_tmr_create 第二个参数赋值给这个参数。
代码练兵场:
先说一下代码的整体设计思路:
首先, 通过按键1设置定时器1,定时5s,按键2设置定时器2,定时1s。由于RTX的软件定时器不支持周期性定时,所以需要周期性定时就需要重复创建。
然后在回调函数中,如果是定时器1,就发送消息,有其他任务接收的,如果是定时器2,就打印定时器2这个字符串。
注意回调函数在(我们创建的信号量初始化为0,你就应该猜测到肯定有一个地方需要发送消息的,注意回调函数中使用RTX系统函数必须是isr开头的不能是os开头的,因为回调函数是在滴答定时器中断中执行的 ):
串口输出如下:
题外话:这样来看,还是freertos和ucos更强大一点,居然连周期性定时器都不支持。
RTX——第17章 定时器组的更多相关文章
- RTX——第13章 事件标志组
以下内容转载自安富莱电子: http://forum.armfly.com/forum.php 前面的章节我们已经讲解了任务管理和时间管理,从本章节开始讲解任务间的通信和同步机制.首先讲解任务间的通信 ...
- 【RL-TCPnet网络教程】第17章 RL-TCPnet之UDP通信
第17章 RL-TCPnet之UDP通信 本章节为大家讲解RL-TCPnet的UDP通信实现,学习本章节前,务必要优先学习第16章UDP用户数据报协议基础知识.有了这些基础知识之后,再搞本章 ...
- 第17章 EXTI—外部中断/事件控制器
第17章 EXTI—外部中断/事件控制器 全套200集视频教程和1000页PDF教程请到秉火论坛下载:www.firebbs.cn 野火视频教程优酷观看网址:http://i.youku.co ...
- 第17章 EXTI—外部中断/事件控制器—零死角玩转STM32-F429系列
第17章 EXTI—外部中断/事件控制器 全套200集视频教程和1000页PDF教程请到秉火论坛下载:www.firebbs.cn 野火视频教程优酷观看网址:http://i.youku.co ...
- CSS3秘笈第三版涵盖HTML5学习笔记13~17章
第13章,构建基于浮动的布局 使用的是float(浮动)属性 注:float:none值将取消所有浮动,通常只用来取消元素中已经应用的浮动. 切记:不需要给正文的div设计宽度,即使设计成固定宽度也不 ...
- C#高级编程9 第17章 使用VS2013-C#特性
C#高级编程9 第17章 使用VS2013 编辑定位到 如果默认勾选了这项,请去掉勾选,因为勾选之后解决方案的目录会根据当前文件选中. 可以设置项目并行生成数 版本控制软件设置 所有文本编辑器行号显示 ...
- MySQL性能调优与架构设计——第 17 章 高可用设计之思路及方案
第 17 章 高可用设计之思路及方案 前言: 数据库系统是一个应用系统的核心部分,要想系统整体可用性得到保证,数据库系统就不能出现任何问题.对于一个企业级的系统来说,数据库系统的可用性尤为重要.数据库 ...
- 《深入Java虚拟机学习笔记》- 第17章 异常
<深入Java虚拟机学习笔记>- 第17章 异常
- JavaScript高级程序设计(第三版)学习笔记11、12、17章
章, DOM扩展 选择符 API Selector API Level1核心方法querySelector .querySelectorAll,兼容的浏览器可以使用 Document,Element ...
随机推荐
- 【Oracle】(savepoint)保存点的使用
作用 保存点可以回退到事务的一部分,我们在操作数据库的过程中可以对事务分隔为几个部分,在操作失误的时候就可以回滚到某个点即可. 实现步骤 我们现在新建一张表TMP003 )); 第一步:插入第一条记录 ...
- 生成CFree 5.0 注册码
C-Free 5.0真是一个很棒的编程软件,可今天用着用着却让我注册,下面的注册码分享给大家: 方法一.下载CFree 5.0之后,直接输入以下信息进行注册. 用户名:tianfang电子邮件:qua ...
- lr如何获取当前系统时间戳
lr如何获取当前系统时间戳 一般使用time函数,获取当前unix时间戳 lr程序如下: int t1; char a[20]; t1=time();//获取当前系统时间 //根据不同情况,将时间存储 ...
- vue-router实现SPA购物APP基本功能
概述 vue-router是vue中的一个核心插件,用它来实现SPA购物APP基本功能 详细 代码下载:http://www.demodashi.com/demo/10725.html vue-rou ...
- mysql中的慢查询日志
首先我们看一下关于mysql中的日志,主要包含:错误日志.查询日志.慢查询日志.事务日志.二进制日志: 日志是mysql数据库的重要组成部分.日志文件中记录着mysql数据库运行期间发生的变化:也就是 ...
- HDUOJ ---悼念512汶川大地震遇难同胞——来生一起走
悼念512汶川大地震遇难同胞——来生一起走 Time Limit: 1000/1000 MS (Java/Others) Memory Limit: 32768/32768 K (Java/Ot ...
- 史上最全的iOS面试题及答案,且看且珍藏,错过就没有喽!
1. Object-c的类可以多重继承么?可以实现多个接口么?Category是什么?重写一个类的方式用继承好还是分类好?为什么? 答:Object-c的类不可以多重继承;可以实现多个接口,通过实现多 ...
- 【LeetCode】57. Insert Interval
Insert Interval Given a set of non-overlapping intervals, insert a new interval into the intervals ( ...
- GFW的前世今生,一部GFW之父方滨兴的发家史
http://whu.myubbs.com/thread-96390-1-1.html方滨兴(1960年7月17日-),男,中国共chan党党员,中国工程院院士,全国人大代表,中国科学院信息工程研究所 ...
- 基于node.js的web框架express
1.安装node.js方法: window :https://nodejs.org/en/ linux:http://www.runoob.com/nodejs/nodejs-install-setu ...