打印
[STM32F1]

空指令

[复制链接]
552|16
手机看帖
扫描二维码
随时随地手机跟帖
跳转到指定楼层
楼主
wangzsa|  楼主 | 2021-12-8 21:23 | 只看该作者 回帖奖励 |倒序浏览 |阅读模式
#define  NOP() _nop_()  /* 定义空指令 */
这个空指令怎么用的啊?

使用特权

评论回复
沙发
dengdc| | 2021-12-8 21:25 | 只看该作者
空指令可以用来延时或者占位等。空指令并不是什么也不做,一般会占用一个时钟周期

使用特权

评论回复
板凳
kangzj| | 2021-12-8 21:27 | 只看该作者
可以当很短时间的延时使用

使用特权

评论回复
地板
huangchui| | 2021-12-8 21:31 | 只看该作者
uchar Read(void) /*读一个字节的数据,并返回该字节值*/   
{   
        
    uchar temp=0;   
        
    uchar temp1=0;   
        
    uchar BitCounter=8;   
        
    Sda=1;   
        
    do{         
        Scl=0;   
            
        _nop_ ();   
            
        _nop_ ();   
            
        _nop_ ();   
            
        _nop_ ();   
            
        Scl=1;   
            
        _nop_ ();   
            
        _nop_ ();   
            
        _nop_ ();   
            
        _nop_ ();   
            
        if(Sda) /*如果Sda=1;*/               
            temp=temp|0x01; /*temp的最低位置1*/         
        else               
            temp=temp&0xfe; /*否则temp的最低位清0*/   
            
        if(BitCounter-1)               
        {     
            temp1=temp<<1;              
            temp=temp1;            
        }   
            
        BitCounter--;   
            
    }while(BitCounter);   
        
    return(temp);   
        
}

使用特权

评论回复
5
wyjie| | 2021-12-8 21:33 | 只看该作者
这条指令的时间是确定的,可用作精确延时。

使用特权

评论回复
6
juventus9554| | 2021-12-8 21:35 | 只看该作者
还有一些地方可以用到NOP。

使用特权

评论回复
7
huangchui| | 2021-12-8 21:37 | 只看该作者
比如JMP不能再return之前之类的,这是芯片设计的bug。提出的解决方法就是JMP后加一个NOP,这样就保证了,不会发生错误了。

使用特权

评论回复
8
yszong| | 2021-12-8 21:38 | 只看该作者
程序中直接使用_nop_ ()进行延时就好了。适用于需要微弱延时的场合。

使用特权

评论回复
9
llljh| | 2021-12-8 21:40 | 只看该作者
__nop();

使用特权

评论回复
10
juventus9554| | 2021-12-8 21:43 | 只看该作者


__asm void nop(void)
{
    NOP
}

然后在之后的C代码中调用该函数:

void main()
{
...
nop();
...
}

使用特权

评论回复
11
wuhany| | 2021-12-8 21:48 | 只看该作者
看你开发软件里有没有提到这个

使用特权

评论回复
12
jlyuan| | 2021-12-8 21:50 | 只看该作者
用来微小的延时

使用特权

评论回复
13
stly| | 2021-12-8 21:52 | 只看该作者
我一般就是用来延时用

使用特权

评论回复
14
jlyuan| | 2021-12-8 21:54 | 只看该作者
用来延时用的

使用特权

评论回复
15
lium| | 2021-12-8 21:56 | 只看该作者
也可以暂时用来占位

使用特权

评论回复
16
tian111| | 2021-12-8 21:57 | 只看该作者
延时 可能是一个时钟周期

使用特权

评论回复
17
wangzsa|  楼主 | 2021-12-8 22:01 | 只看该作者
       
其实还是不大明白,我再琢磨琢磨吧,多谢了哈先

使用特权

评论回复
发新帖 我要提问
您需要登录后才可以回帖 登录 | 注册

本版积分规则

914

主题

9040

帖子

5

粉丝