zoukankan      html  css  js  c++  java
  • rt_thread之时钟管理

    时钟节拍RT_TICK_PER_SECOND:操作系统中最小的时间单位是时钟节拍 (OS Tick)。周期性中断,这个中断可以看做是系统心跳,是系统延时(OS Tick(10ms)的最新倍),超时,时间片轮转调度的基础。中断之间的时间间隔取决于不同的应用,一般是 1ms–100ms,由 SysTick硬件定时器中断产生。

    精准延时:用其它硬件定时器或基于os tick的精准硬件阻塞方法如下:

    void rt_hw_us_delay(rt_uint32_t us)
    {
        rt_uint32_t delta;
        /* 获得延时经过的 tick 数 */
        us = us * (SysTick->LOAD/(1000000/RT_TICK_PER_SECOND));
        /* 获得当前时间 */
        delta = SysTick->VAL;
        /* 循环获得当前时间,直到达到指定的时间后退出循环 */
        while (delta - SysTick->VAL< us);
    }

    而对于非OS Tick

    主要函数:

    rt_tick_t rt_tick_get(void);//非阻塞延时计量任务的运行事件
    定时器:软件RT_USING_TIMER_SOFT(在系统时钟 timer 线程的上下文中被调用)/硬件(回调函数将在时钟中断的服务例程上下文中被调用),单词触发/周期运行(RT_TIMER_FLAG_SOFT_TIMER 来指定设置 SOFT_TIMER 模式)
    初始化:void rt_system_timer_init(void);/void rt_system_timer_thread_init(void);//软件timer

    #define RT_TIMER_CTRL_SET_TIME      0x0     /* 设置定时器超时时间       */
    #define RT_TIMER_CTRL_GET_TIME      0x1     /* 获得定时器超时时间       */
    #define RT_TIMER_CTRL_SET_ONESHOT   0x2   /* 设置定时器为单次定时器   */
    #define RT_TIMER_CTRL_SET_PERIODIC  0x3    /*设置定时器为周期型定时器 */
  • 相关阅读:
    .Net Remoting(应用程序域) Part.1(转载)
    .net 中读取自定义Config文件
    WebBrowser控件说明
    Delphi常用技巧 3
    句柄3
    句柄5
    点击TWebBrowser中的超级链接不在新的IE窗口打开
    句柄2
    webbrower
    句柄4
  • 原文地址:https://www.cnblogs.com/jieruishu/p/12813892.html
Copyright © 2011-2022 走看看