zoukankan      html  css  js  c++  java
  • 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更强大一点,居然连周期性定时器都不支持。

     

  • 相关阅读:
    AX ERROR: Could not find my mock parent, most likely I am stale 不及格的程序员
    利用Segue在视图控制器间传值的问题 不及格的程序员
    Creating a Singleton Instance 不及格的程序员
    iPad 通知 UIKeyboardWillShowNotification 不会在keyBoard处在Undock状态下接到通知 不及格的程序员
    Why RootViewController's view is rotated Automatically by System when the app first loaded? 不及格的程序员
    如何弹出UIDatePicker最好 不及格的程序员
    jQuery开始做恶了 不及格的程序员
    what is the SEL,id and IMP,Class ,Method? 不及格的程序员
    Objectivec 字符串比较的陷井 不及格的程序员
    Unable to create any keyboard shortcuts after the iOS 6.1.3 update on iPad. 不及格的程序员
  • 原文地址:https://www.cnblogs.com/yangguang-it/p/7347994.html
Copyright © 2011-2022 走看看