STM32的延时函数delay_nms(u16 time),@72M的情况下,延时1ms,i为什么设置为12000?

6225℃ JODI

STM32的延时函数delay_nms(u16 time),@72M的情况下,延时1ms,i为什么设置为12000?

怎么理解这个单片机延迟函数

通过注释2113来给你讲解一下吧:

void Delay40us()5261//@12.000MHz

{

unsigned char i;

_nop_();//延时41021us,

i = 17; //延时1us

while (--i); //延时2*i*T+5*T=2*17+5=39us

}

所以延时41us,要延时40us,那个1653_nop_();应该去掉,因专为作者忘记了还有一个i=17;也会延时。属

为啥延时为1ms

运行这些语句所编译出的汇编语句耗时1mS,但是注意C语言这样延时,延时长度与编译器和优化设置有很大关系。

单片机的延时程序。。为什么这个是延时1ms??

这个应该是51单片机晶振是12MHZ的,可以通过示波器测试时间,这个没有为什么,是一个经验值,准确的延时时间要用定时器做,这种延时是大概的时间

这延时函数怎么理解void Delay1ms

与单片机的计算百速度有关,主要看cpu频率

假如你的单片机cpu频率为8Mhz

则该单片机大约每秒进行8 000 000次的运算,

这个delay函数就是通过i,j,k的自减运算来达到延度迟内效果

一直减到ijk都为0才执容行下一段函数

delay(10)就是让单片机进行 i(10) * j(10) * k(50)=5000次的自减运算,时间大约为5000/8 000 000=0.625ms

自己可以根据这个算法来简单测算出延迟时间

TAG: 函数