STM32的延时函数delay_nms(u16 time),@72M的情况下,延时1ms,i为什么设置为12000?
更新时间:2022-01-25 10:32:24 • 作者:JODI •阅读 169
怎么理解这个单片机延迟函数
通过注释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
自己可以根据这个算法来简单测算出延迟时间