_nop_的延时时间是一个机器周期,与晶振的关系是:osc/12/1000000微秒
比如12M晶振,=12*1000000/12/1000000=1us
delay(1)则不知道是多少延时时间了,这与你的子程序本身有关。比如:
delay(unsigned char a)
{
unsigned char i,j;
for(i=0;ia;i++)
for(j=0;j120;j++);
}
那么delay(1)则是在12M晶振的情况下延时约为1毫秒。
Keil4下,STM32的下载算法是有源码的,你可以到Flash目录下找来看看,然后按照你的芯片属性,修改算法中的定义,然后重新编译生成算法,再来下载试试.
这类内核级的内联函数你可以搜索一下编译器自带的帮助。
在MDK环境下是__nop();,其函数原型为void __nop(void)。
编译时会在每个__nop();处生成一个NOP指令。
在C语言开发下使用内嵌汇编方式,在需要的地方添加
__ASM("NOP");
__NOP();
以上语句及是nop的使用方式,直接使用
_nop();
是通不过编译的。
nop()空指令操作,程序计数器ip加1,即指向下一条指令。
即宏定义nop()相当于汇编里面的nop指令
本文标签:stm32nop()定义