[应用相关]

单片机NOP 指令

[复制链接]
814|44
手机看帖
扫描二维码
随时随地手机跟帖
小夏天的大西瓜|  楼主 | 2023-12-23 15:52 | 显示全部楼层 |阅读模式

_nop_() 函数产生的是 NOP 指令,先来简单介绍一下 NOP 指令,基本介绍走个流程把:

NOP 是编程语言中一个经常用到的指令,它的全称是 No Operation,即无操作指令。

NOP 是汇编语言中的一个伪指令,通过NOP一系列的编程语句,能够不改变任何程序可以访问的寄存器。

NOP 指令的作用:
我们知道,指令、数据对齐可以有效地提高程序的性能, 使用 NOP 指令,可以使得指令按字对齐,从而提高效率 。比如一条指令占用 3 个字节,再加上一个 NOP 指令,就使得指令 4 字节对齐了。

通过 NOP 指令产生一定的延迟,这与 CPU 的频率有关系,适用于一些频率低的 单片机 场合。

计算机在输入或者输出的过程中,使用 NOP 指令可可以很好的等待计算机缓冲区清空,等待总线恢复正常,其实也算是延时的一种了

使用特权

评论回复
中国龙芯CDX| | 2023-12-28 09:33 | 显示全部楼层
NOP 指令产生一定的延迟,这个可以做延时使用吧

使用特权

评论回复
LOVEEVER| | 2024-1-25 12:32 | 显示全部楼层
NOP 是编程语言中一个经常用到的指令,它的全称是 No Operation,即无操作指令。

使用特权

评论回复
albertaabbot| | 2024-2-2 20:16 | 显示全部楼层
指令表示一个空操作,即不执行任何操作的指令。

使用特权

评论回复
maqianqu| | 2024-2-2 21:48 | 显示全部楼层
这种指令通常用于在等待外设或延迟时间时占用一个时钟周期。

使用特权

评论回复
tifmill| | 2024-2-3 08:33 | 显示全部楼层
在C语言中,可以使用__nop()函数来插入一个NOP指令,该函数是ARM Cortex-M核的一部分。

使用特权

评论回复
updownq| | 2024-2-3 16:44 | 显示全部楼层
在ARM Cortex-M系列处理器(如STM32)中,NOP指令的汇编表示为nop。

使用特权

评论回复
chenci2013| | 2024-2-3 18:24 | 显示全部楼层
NOP指令执行的延时并不是绝对准确的

使用特权

评论回复
saservice| | 2024-2-3 20:50 | 显示全部楼层
当CPU执行到此指令时,不会执行任何实际操作,只是简单地将程序计数器(PC)加1,指向下一个指令。

使用特权

评论回复
tifmill| | 2024-2-3 22:55 | 显示全部楼层
一种特殊的指令,它不执行任何操作,只是占用一个时钟周期。

使用特权

评论回复
caigang13| | 2024-2-4 08:06 | 显示全部楼层
我记得大佬说过,这个指令的发明弊大于利。

使用特权

评论回复
sesefadou| | 2024-2-4 21:15 | 显示全部楼层
如果一个STM32单片机的主频是72MHz,那么一个机器周期大约是1/72000000秒。由于NOP指令消耗的时间正好是一个机器周期,因此可以通过执行NOP指令来达到微秒级别的延时。具体来说,如果要实现1微秒的延时,理论上需要执行72个NOP指令。

使用特权

评论回复
albertaabbot| | 2024-2-5 11:17 | 显示全部楼层
为了获得准确延时效果,往往需要考虑更多因素,如指令流水线、中断等因素的影响,并且对于更精确的延时,通常推荐采用定时器硬件的方式来完成。

使用特权

评论回复
houjiakai| | 2024-2-5 11:55 | 显示全部楼层
使用NOP指令进行延迟并不是最精确的方法,因为它依赖于单片机的时钟频率

使用特权

评论回复
claretttt| | 2024-2-5 12:48 | 显示全部楼层
在该函数中通过循环执行NOP指令来实现延时效果。

使用特权

评论回复
mickit| | 2024-2-5 14:49 | 显示全部楼层
可以使用NOP指令来产生一个短暂的延迟

使用特权

评论回复
jackcat| | 2024-2-5 17:47 | 显示全部楼层
在STM32的库函数中,并没有提供专门的us级别延时函数, 往往需要通过软件手段来实现精准的延时。

使用特权

评论回复
everyrobin| | 2024-2-5 18:16 | 显示全部楼层
__asm__ __volatile__ ("nop");

使用特权

评论回复
pmp| | 2024-2-6 10:09 | 显示全部楼层
常用于在程序中插入空闲周期或调整指令的执行顺序。

使用特权

评论回复
wangdezhi| | 2024-2-6 16:34 | 显示全部楼层
在编写延时函数时, 使用NOP指令来增加额外的延时  

使用特权

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

本版积分规则

168

主题

1397

帖子

1

粉丝