以下内容转载自安富莱电子: 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章 定时器组的更多相关文章

  1. RTX——第13章 事件标志组

    以下内容转载自安富莱电子: http://forum.armfly.com/forum.php 前面的章节我们已经讲解了任务管理和时间管理,从本章节开始讲解任务间的通信和同步机制.首先讲解任务间的通信 ...

  2. 【RL-TCPnet网络教程】第17章 RL-TCPnet之UDP通信

    第17章      RL-TCPnet之UDP通信 本章节为大家讲解RL-TCPnet的UDP通信实现,学习本章节前,务必要优先学习第16章UDP用户数据报协议基础知识.有了这些基础知识之后,再搞本章 ...

  3. 第17章 EXTI—外部中断/事件控制器

    第17章     EXTI—外部中断/事件控制器 全套200集视频教程和1000页PDF教程请到秉火论坛下载:www.firebbs.cn 野火视频教程优酷观看网址:http://i.youku.co ...

  4. 第17章 EXTI—外部中断/事件控制器—零死角玩转STM32-F429系列

    第17章     EXTI—外部中断/事件控制器 全套200集视频教程和1000页PDF教程请到秉火论坛下载:www.firebbs.cn 野火视频教程优酷观看网址:http://i.youku.co ...

  5. CSS3秘笈第三版涵盖HTML5学习笔记13~17章

    第13章,构建基于浮动的布局 使用的是float(浮动)属性 注:float:none值将取消所有浮动,通常只用来取消元素中已经应用的浮动. 切记:不需要给正文的div设计宽度,即使设计成固定宽度也不 ...

  6. C#高级编程9 第17章 使用VS2013-C#特性

    C#高级编程9 第17章 使用VS2013 编辑定位到 如果默认勾选了这项,请去掉勾选,因为勾选之后解决方案的目录会根据当前文件选中. 可以设置项目并行生成数 版本控制软件设置 所有文本编辑器行号显示 ...

  7. MySQL性能调优与架构设计——第 17 章 高可用设计之思路及方案

    第 17 章 高可用设计之思路及方案 前言: 数据库系统是一个应用系统的核心部分,要想系统整体可用性得到保证,数据库系统就不能出现任何问题.对于一个企业级的系统来说,数据库系统的可用性尤为重要.数据库 ...

  8. 《深入Java虚拟机学习笔记》- 第17章 异常

    <深入Java虚拟机学习笔记>- 第17章 异常

  9. JavaScript高级程序设计(第三版)学习笔记11、12、17章

    章, DOM扩展 选择符 API Selector API Level1核心方法querySelector .querySelectorAll,兼容的浏览器可以使用 Document,Element  ...

随机推荐

  1. 〖Linux〗Qt+gsoap开发客户端程序,服务端地址设定的字符串转换处理

    之所以写出来,是由于经常因为这个问题屡屡丢面子.. 一般情况下,QString转换成(char*),我们一般直接使用: char *str = qstr->text().toLatin1().d ...

  2. shell之“>/dev/null 2>&1”

    shell之“>/dev/null 2>&1” http://ixdba.blog.51cto.com/2895551/526442 今天在自己的一个技术群中又被问道了这么一个问题 ...

  3. 微信小程序-通知滚动小提示

    代码地址如下:http://www.demodashi.com/demo/14044.html 一.前期准备工作 软件环境:微信开发者工具 官方下载地址:https://mp.weixin.qq.co ...

  4. hdu 4412 Sky Soldiers(区间DP)

    Sky Soldiers Time Limit: 6000/3000 MS (Java/Others)    Memory Limit: 32768/32768 K (Java/Others) Tot ...

  5. 【LeetCode】124. Binary Tree Maximum Path Sum

    Binary Tree Maximum Path Sum Given a binary tree, find the maximum path sum. The path may start and ...

  6. 【LeetCode】154. Find Minimum in Rotated Sorted Array II (3 solutions)

    Find Minimum in Rotated Sorted Array II Follow up for "Find Minimum in Rotated Sorted Array&quo ...

  7. ajax操作登录

    js文件中的内容(ajax.operate.js) ;(function ($, window) { var _ajaxOperate = window.ajaxOperate || {}; _aja ...

  8. JMeter学习笔记---作用域规则

    JMeter测试树中既包含遵循分层规则的测试元件(监听器.配置元件.后置处理器.前置处理器.断言.定时器),又包含遵循顺序规则的测试元件(逻辑控制器.采样器),测试人员创建测试计划的同时,实际上就创建 ...

  9. 通过mysqltools全自动安装配置mysql复制环境

    一.从github下载mysqltools工具包 github地址:https://github.com/Neeky/mysqltools 二.环境规划: 主机名 ip mysql中的角色 maste ...

  10. ASP.NET MVC 笔记

    (从今天开始,还是换回默认的代码高亮插件吧...话说此篇仅供个人遗忘后查阅,木有详尽解释...) 1.Controller中的所有Action方法不限制返回值类型,返回值应该至少可以被ToString ...