|
使用定时器产生的延时精度确实是高,但是也相对麻烦,软件延时虽然精度不高,但也相对简单,使用方便,在精度要求不高的情况的可以使用。 使用的是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();
- }
复制代码
|
|