delay_delay函数 - CSDN
  • delay函数的用法及声明

    万次阅读 2017-01-16 14:02:30
    在VC中使用带上头文件 #include 注意: 在VC中Sleep中的第一个英文字符为大写的"S" 在标准C中是sleep, 不要大写.. 下面使用大写的来说明,, 具体用什么看你用什么编译器.... Sleep函数的一般形式: ...
     在VC中使用带上头文件
      #include <windows.h>
      注意:
      在VC中Sleep中的第一个英文字符为大写的"S"
      在标准C中是sleep, 不要大写.. 下面使用大写的来说明,, 具体用什么看你用什么编译器. 简单的说VC用Sleep, 别的一律使用sleep.
      Sleep函数的一般形式:
      Sleep(unisgned long);
      其中,Sleep()里面的单位,是以毫秒为单位,所以如果想让函数滞留1秒的话,应该是Sleep(1000);
      例:
      #include <windows.h>
      int main()
      {
      int a;
      a=1000;
      Sleep(a);/* VC 使用Sleep*/
      return 0;
      }
    
    usleep功能:
    暂停执行。 语法: void usleep(int micro_seconds); 返回值: 无 函数种类: PHP 系统功能 内容说明:本函数可暂时使程序停止执行。参数 micro_seconds 为要暂停的毫秒数(微妙还是毫秒?)。 注意:这个函数不能工作在 Windows 操作系统中。参见:usleep() 与sleep()类似,用于延迟挂起进程。进程被挂起放到reday queue。
      只是一般情况下,延迟时间数量级是秒的时候,尽可能使用sleep()函数。
      且,此函数已被废除,可使用nanosleep。
      如果延迟时间为几十毫秒,或者更小,尽可能使用usleep()函数。这样才能最佳的利用CPU时间
    
    delay:
    函数名: delay 
      功 能: 将程序的执行暂停一段时间(毫秒) 
      用 法: void delay(unsigned milliseconds); 
      程序例: 
      /* Emits a 440-Hz tone for 500 milliseconds */ 
      #include<dos.h> 
      int main(void) 
      { 
      sound(440); 
      delay(500); 
      nosound(); 
      return 0; 
      }
      (由于delay读音像地雷,在各大OI灌水区通用……) 
    
    
    delay()是循环等待,该进程还在运行,占用处理器。   
    sleep()不同,它会被挂起,把处理器让给其他的进程。
    
    sleep()参数指定暂停时间,单位是s   
    delay()参数指定暂停时间,单位是ms
    展开全文
  • Delay_ms延时函数详解

    万次阅读 2017-11-13 21:24:40
    void Delay_ms(unsigned int time) { unsigned char n; while(time>0) { for(n=0;n;++n) { asm("nop"); } time--; } } 在流程中加入延时函数的原因是:单片机执行命令的速度太快(如果选择1MHz的晶振...

    void Delay_ms(unsigned int time)
    {
        unsigned char  n;
       while(time>0)
        {
        for(n=0;n<187;++n)
      {
    asm("nop");
    }
    time--;
    }
    }

    在流程中加入延时函数的原因是:单片机执行命令的速度太快(如果选择1MHz的晶振频率,AVR执行大多数指令的时间仅仅是1),任由单片机;连续改变端口输出的话,由于人眼辨别物体的速度跟不上,我们将看不到任何闪烁的效果,所以加入延时来放慢端口电平的变化速度


    软件延时的基本原理是多次重复执行指令,比如1条指令执行需要1微妙的时间,那么执行一千条这个指令 就会消耗一毫秒的时间;  其中asm("nop");语句是插入汇编指令的写法。表示在for循环中插入一条nop指令,这是一个空操作指令;它的执行将消耗掉一个cpu周期,因为我们的目的就是延时,所以空操作就可以;

    但是C语言书写的fof循环编译器会加入很多我们看不到的底层实现代码,它们的执行也需要时间,所以循环次数远小于1000;


    注意:软件延时只能用到要求不高的场合,因为软件延时会无端的浪费掉单片机的资源,延时也容易被打断就不准确了
    展开全文
  • 头文件Delay.h(网上很难找到的,建议下载后收藏,并放到keil的INC文件夹中,以后就可以直接调用了)
  • 常用的延时函数delay()

    2020-07-29 14:21:47
    这是一个常用的延时功能模块,编程有一 定的用处。
  • delay的几个函数说明

    2019-06-20 13:08:52
    delay下面的主要函数是delay_init,delay_us和delay_ms。 非OS的时候,可以很简单 void delay_init(u8 SYSCLK) { SysTick_CLKSourceConfig(SysTick_CLKSource_HCLK_Div8); fac_us=SYSCLK/8; //每个us需要...

    delay下面的主要函数是delay_init,delay_us和delay_ms。

    非OS的时候,可以很简单

    void delay_init(u8 SYSCLK)
    {
    
         SysTick_CLKSourceConfig(SysTick_CLKSource_HCLK_Div8);
         fac_us=SYSCLK/8;        //每个us需要运行21个时间片
    
        fac_ms=(u16)fac_us*1000;//
    
    }        
    比如系统的频率是168M,SYSCLK传入的是168,那么systick就是168M/8=21M,那么每us就需要systick运行168/8个时间片。
    因为不需要兼容OS,所以可以肆意的对systick计数器进行清零。OS的时候,systick计数到会触发中断,所以不能随便对SysTick->LOAD和SysTick->VAL进行操作。
    void delay_us(u32 nus)
    {        
        u32 temp;             
        SysTick->LOAD=nus*fac_us; // 那么多延时需要的时间片            
        SysTick->VAL=0x00;        //计数器清零
        SysTick->CTRL|=SysTick_CTRL_ENABLE_Msk ;          //
        do
        {
            temp=SysTick->CTRL;
        }
        while((temp&0x01)&&!(temp&(1<<16)));// 查询是不是计数到了
        SysTick->CTRL&=~SysTick_CTRL_ENABLE_Msk;       //
        SysTick->VAL =0X00;       //
    }

    通过查询是systick计数器的寄存器状态,确认计数是否到了。

    有OS的时候,要兼容OS和原本的delay_us函数。

    void delay_init(u8 SYSCLK)
    {
        u32 reload;
         SysTick_CLKSourceConfig(SysTick_CLKSource_HCLK);  //没有分频 168M
        fac_us=SYSCLK;                            // 168个时间片
        reload=SYSCLK;                            //
        reload*=1000000/configTICK_RATE_HZ;        //168*1000000/1000//
        fac_ms=1000/configTICK_RATE_HZ;            //
        SysTick->CTRL|=SysTick_CTRL_TICKINT_Msk;// 开启中断
        SysTick->LOAD=reload;                     //赋重载值
        SysTick->CTRL|=SysTick_CTRL_ENABLE_Msk; //开启systick
    }            

    和之间的非OS相比,reload在初始化被定义,并复制给LOAD。因为非OS的时候,systick只在延时的时候被使用,用来计算时间片。而OS运行的时候,需要一个心

    跳,要一直运行的,所以就用systick,systick的频率是168M,reload=168M/1000,所以systick每次都数1ms。每次计数到,都会触发SysTick_Handler中断函数,OS

    会在里面做任务切换等等事情。

    然后delay_us这个函数,也和之前不一样了。之前可以去修改systick的值来实现固定时间的延时。现在只能通过设置一个tcnt的变量,通过读取systick->VAL的值,来

    确定多少us的延时。

    void delay_us(u32 nus)
    {        
        u32 ticks;
        u32 told,tnow,tcnt=0;
        u32 reload=SysTick->LOAD;                //
        ticks=nus*fac_us;                         //
        told=SysTick->VAL;                        //¸
        while(1)
        {
            tnow=SysTick->VAL;    
            if(tnow!=told)
            {        
                if(tnow<told)
                    tcnt+=told-tnow;    //
                else 
                    tcnt+=reload-tnow+told;        
                told=tnow;
                if(tcnt>=ticks)break;            //
            }  
        };                                            
    }  

    delay_ms都是类似的,基于delay_us,就不做介绍了。

     

    转载于:https://www.cnblogs.com/nasduc/p/8487864.html

    展开全文
  • 延时函数delay与sleep有什么区别呢?

    万次阅读 2011-04-19 17:16:00
    在VC中使用带上头文件 #include 注意: 在VC中Sleep中的第一个英文字符为大写的"S" 在标准C中是sleep, 不要大写.. 下面使用大写的来说明,, 具体用什么看你用什么编译器.... 其中,Sleep()里面的单位,是以毫秒...
       在VC中使用带上头文件
      #include <windows.h>
      注意:
      在VC中Sleep中的第一个英文字符为大写的"S"
      在标准C中是sleep, 不要大写.. 下面使用大写的来说明,, 具体用什么看你用什么编译器. 简单的说VC用Sleep, 别的一律使用sleep.
      Sleep函数的一般形式:
      Sleep(unisgned long);
      其中,Sleep()里面的单位,是以毫秒为单位,所以如果想让函数滞留1秒的话,应该是Sleep(1000);
      例:
      #include <windows.h>
      int main()
      {
      int a;
      a=1000;
      Sleep(a);/* VC 使用Sleep*/
      return 0;
      }
    
    usleep功能:
    暂停执行。 语法: void usleep(int micro_seconds); 返回值: 无 函数种类: PHP 系统功能 内容说明:本函数可暂时使程序停止执行。参数 micro_seconds 为要暂停的毫秒数(微妙还是毫秒?)。 注意:这个函数不能工作在 Windows 操作系统中。参见:usleep() 与sleep()类似,用于延迟挂起进程。进程被挂起放到reday queue。
      只是一般情况下,延迟时间数量级是秒的时候,尽可能使用sleep()函数。
      且,此函数已被废除,可使用nanosleep。
      如果延迟时间为几十毫秒,或者更小,尽可能使用usleep()函数。这样才能最佳的利用CPU时间
    
    delay:
    函数名: delay 
      功 能: 将程序的执行暂停一段时间(毫秒) 
      用 法: void delay(unsigned milliseconds); 
      程序例: 
      /* Emits a 440-Hz tone for 500 milliseconds */ 
      #include<dos.h> 
      int main(void) 
      { 
      sound(440); 
      delay(500); 
      nosound(); 
      return 0; 
      }
      (由于delay读音像地雷,在各大OI灌水区通用……) 
    
    
    delay()是循环等待,该进程还在运行,占用处理器。   
    sleep()不同,它会被挂起,把处理器让给其他的进程。
    
    sleep()参数指定暂停时间,单位是s   
    delay()参数指定暂停时间,单位是ms
    展开全文
  • 计算机网络系列学习:Delay

    千次阅读 2015-09-30 01:21:45
    对网络传输过程中的各种延时进行整理。
  • delay() 方法

    2019-06-16 02:14:06
    2019独角兽企业重金招聘Python工程师标准>>> ...
  • 【stm32】delay详解

    千次阅读 2019-11-01 12:40:41
    什么是SysTick CM3 内核的处理器,内部包含了一个 SysTick 定时器,SysTick 是一个 24 位的倒计数定时器,当计数到 0 时,将从RELOAD 寄存器中自动重装载定时初值,开始新一轮计数。只要不把它在 SysTick 控制及状态...
  • Xilinx IODELAY动态延迟的调用

    千次阅读 2017-10-21 16:58:45
    Xilinx SELECTIO IP核调用配作可变输入延时时其信号接口如下表所示: 接口名 方向 注释 DATA_IN_FROM_PINS Input ...DELAY_BUSY Output IODELAY校准和相位变化正在进行忙信号 DELAY_CLK Input FPG
  • input delay, output delay

    千次阅读 2018-11-19 16:02:41
    input delay, output delay在vivado中使用范围  转载:通过作者使用总结情况,IO口时序约束主要使用在以下情况: 1. 数据交换频率较高  由于IO时序约束一般计算值都是在几纳秒,当FPGA和外部数据交换频率较低...
  • set_max_delay 用于覆盖默认的setup(recovery)约束。 set_min_delay 用于覆盖默认的hold(removal)约束。 语法格式: set_max_delay <delay> [-datapath_only] [-from <node_list>] [-to <...
  • Group Delay and Phase Delay

    千次阅读 2016-01-21 15:14:48
    Group Delay 群延迟 Phase Delay 相位延迟 两个不同的概念,但都是指延迟时间。延迟故名思义就是信号从进入系统到从系统出来时的延迟。好比龙头上接了一根皮管,你拧开龙头,皮管那头水不会立马出来,...
  • 什么是Pin Delay? 芯片内部,核心单元到封装引脚之间的距离成为Pin Delay。在高速电路设计中,需要考虑芯片的Pin Delay来减少走线长度误差。 Pin Delay怎么计算? 在厂商提供的资料中,Pin Delay通常取Min Delay和...
  • set_max_delay

    千次阅读 2018-11-29 19:36:39
    现在的解决办法是使用set_max_delay 和set_min_delay来约束,但是这个延迟的值具体怎么计算,  set_output_delay为负值表示留的margin更大,对于hold更悲观; 对于setup更乐观。   我觉得如果是top level的话...
  • GUI_Delay函数

    千次阅读 2019-01-11 19:30:45
    GUI_Delay()函数 使用GUI_Delay()函数时,对于其延时时间不确定,明明设置为最小值1,延时时间 仍旧太长,不能达到需求。遂决定研究明白其实现机理。 uC/OS-II使用OSTimeDly()函数实现延时,其单位是OS_TICKS...
  • 关于TCP Delay ACK的概念我就不多说了,到处复制粘贴标准文献以及别人的文章只能让本文篇幅加长而降低被阅读完的欲望,再者这也不是什么论文,附录参考文献几乎很少有人去看,所以我把这些都略过了。和风吹的干皮鞋...
  •   在前面的博客中,介绍了output_delay的基础。output_delay就是从FPGA管脚输出到下游芯片之间的时钟和数据之间的关系。   output_delay的约束,就是希望输出时钟落在数据的合适的区间:   dMin = bskew   ...
  • 今天在使用DC设置随路时钟的时候发现里两个比较容易混淆的设置:max_delay/min_delay和input_delay/output_delay。 1)max_delay/min_delay设置指定路径的最大延迟和最小延迟。  如果电路完全是有组合逻辑电路构成的...
  • 从测试结果看采用Task.Delay(1000).Wait()似乎更合理,但大家在实际应用中似乎更多使用await Task.Delay(1000),包括MSDN上的例子。 ``` CancellationTokenSource cts = new CancellationTokenSource(); ...
1 2 3 4 5 ... 20
收藏数 305,224
精华内容 122,089
关键字:

delay