使用定时器产生的延时精度确实是高,但是也相对麻烦,软件延时虽然精度不高,但也相对简单,使用方便,在精度要求不高的情况的可以使用。 使用的是STM32F032 Nucleo开发板,为内部8M晶振。
以下延时函数用示波器测得,精度小于1us。
//STM32F072RB Nucleo
//在内部晶振为8M的情况下
void delay3us()//3us
{
int i;
for(i=0;i<1;i++);
}
void delay10us()//10us
{
int i;
for(i=0;i<12;i++);
}
void delay20us()
{
int i;
for(i=0;i<28;i++);
}
void delay50us()
{
int i;
for(i=0;i<76;i++);
}
void delay200us()
{
int i;
for(i=0;i<317;i++);
}
void delay500us()
{
int i;
for(i=0;i<796;i++);
}
void delay1ms()
{
int i;
for(i=0;i<1590;i++);
}
void delaynms(int n)
{
int j;
for(j=0;j<n;j++)
delay1ms();
}
|