zoukankan      html  css  js  c++  java
  • SysCtlDelay 实现延时

    SysCtlDelay 实际上由 3 条汇编指令实现,一次可以延时 3 个 clock.

    例如,初始化系统时钟:

    SysCtlClockFreqSet((SYSCTL_XTAL_16MHZ | SYSCTL_OSC_MAIN | SYSCTL_USE_OSC), 16000000);

    那么,可以实现毫秒延时函数为:

    void delay_ms(uint32_t ms)
    {
      SysCtlDelay(ms*16000/3);
    }

    但是,这个延时函数有个限制,最多只能延时 805 秒多,因为 最多 0xFF FF FF FF * 3 个 clock,秒数更大的话就溢出了。

    要实现更多秒数的延时,可以用循环来实现,例如:

    void delay_sec(uint32_t s)
    {
      int i;
      for(i=0;i<s;i++)
        SysCtlDelay(16000000/3);
    }

    但是这样有误差,因为 for 循环控制本身也有几条汇编指令,只能用于大致的计时使用。

  • 相关阅读:
    业余时间决定人生
    单片机好网站
    坚持 放弃
    励志博客园网址
    资料下载好网站
    和易法
    二、栈
    一、顺序表
    uCOS任务中的OSTCBDly
    三(1)、队列(链队列)
  • 原文地址:https://www.cnblogs.com/elodio/p/SysCtlDelay.html
Copyright © 2011-2022 走看看