stm32 软件精确延时非systick 非中断

http://www.amobbs.com/thread-5513913-1-1.html

在阿莫上有位大神hcambridge推荐的软件精确延时

//精确延时函数调用wait
void  wait(unsigned long n)
{
        do{
        n--;
        }while(n);
}


//
精确延时函数
#define  SYSCLK             72              //
指明CPU工作频率为72MHz
#define  A            6          //
一次循环所花的周期数
#define  B            3          //
调用、初始化、返回总共所用的周期数
#define  delay_us(nus)  wait(((nus)*(SYSCLK)-(B))/(A))
#define  delay_ms(nms)  delay_us((nms)*1000)
#define  delay_s(ns)    delay_ms((ns)*1000)
//
使用方法:
//delay_us(0.4);   //
延时0.4us
//delay_ms(1456);  //
延时1.456s
//delay_s(21.4345);//
延时21.4345

 

你可能感兴趣的:(STM32)