#ifndef __DELAY_H_ #define __DELAY_H_ #include #if 1 void Dly1us ( unsigned int DelayVal ); void Dly10us ( unsigned int DelayVal ); void Dly100us ( unsigned int DelayVal ); extern unsigned int SystemClockFreq; #define DLY_PARA_US (SystemClockFreq*1.0/8500000) //延时us参数 #define DLY_CALL_US (8) //调用us耗时,自定义应< DLY_PARA_US(譬如8.47) #define delayUs(x) { \ unsigned int _dcnt = (DLY_PARA_US*x-DLY_CALL_US); \ while(_dcnt-- > 0); \ } #define delay_us(us) delayUs(us) #define delay_ms(ms) delayUs(ms*1000) //STM32F103CBT6测试结果: //#define DLY_CALL_US (8) //调用us耗时,自定义 //106.4ms -> 10.6ms -> 1.06ms //90us-114us -> 16us-19us -> 9us #else void delay_init ( u8 SYSCLK ); void delay_ms ( u16 nms ); void delay_us ( u32 nus ); void Delay ( vu32 nCount ); #endif #endif