zoukankan      html  css  js  c++  java
  • _nop()

    相当于汇编里的nop伪指令,表示的是空操作,可是实现延时,表示执行一条没有什么意义的指令,例如 MOV r0 ,r0。因为是执行“指令”,所以花的时间是一个指令周期,指令周期是以机器周期为单位计算的(有的指令周期是2个或者以上的机器周期,但是nop指令就是花费一个机器周期),所以:1个NOP = 1个机器周期 = 12 * 时钟周期(51而言)= 12 * 1 / f; f 表示的是你的晶振频率,
    例如6Mhz的晶振,f = 6000000,带入上式,结果单位为s。

    使用nop延时
    通过使用__NOP()函数进行延时,因为使用了8M晶振4倍频,所以是32MHz,所以一个nop约等于1/32us,所以使用32个nop函数为一个us,然后根据需要的定时时间进行计算。

    void delay_us(uint32_t time) //us延时
    {
    uint32_t i=0;
    for(i=0;i<time;i++)
    {
    __NOP();
    __NOP();__NOP();__NOP();__NOP();__NOP();__NOP();__NOP();__NOP();__NOP ();__NOP();__NOP();__NOP();__NOP();__NOP();

    __NOP();__NOP();__NOP();__NOP();__NOP();__NOP();__NOP();__NOP();__NOP();__NOP ();__NOP();__NOP();__NOP();__NOP();__NOP();
    __NOP();__NOP();
    }
    }
    void delay_ms(uint32_t time) //ms延时
    {
    uint32_t i=1000*time;
    delay_us(i);
    }

  • 相关阅读:
    jvm调优核心思路
    G1 垃圾回收器
    类加载和内存区域划分
    jvm优化案例
    垃圾回收
    buffer pool详解
    InnoDb存储引擎执行流程
    mysql总体架构
    (转载)C#串口介绍以及简单串口通信程序设计实现
    C++文本操作(读写文本文件/二进制文件)
  • 原文地址:https://www.cnblogs.com/qifeng1024/p/11956588.html
Copyright © 2011-2022 走看看