大家都知道精确延时在很多时候是很需要的,可是对于一直用c来写程序的人很难知道自己写的delay 到底延时多久。
举个例子吧,例如i2c的延时,有时需要delay 4个us,那我只需要写出一个delay为1us的 然后再循环几次就差不多了。虽然循环会来带误差,只要循环次数少些,也不会太大的。
如何呢确定一个1us的延时,大家可以写一个delay;void delay_us (unsigned short n)
{
unsigned short i;
for(n;n>0n--)
for(i=0;i<10;i++);
}
接下来就是while(1)
{
LED = 0;
delay_us(1);
LED = 1;
delay_us(1);
}
然后用示波器测量出IO口高低电平的时间就好了,不断修改 for(i=0;i<10;i++);中的i<10 ,直到接近1us就好了
|