在程序的调试或硬件测试时经常用到一种阻塞延时函数
下面是在STM32F0 48MHz时钟下实现的延时毫秒和微妙函数,在实际使用中测试发现这两个函数比较接近实际要求的延时值;
//毫秒级延时
void DelayMs(uint32_t t)
{
volatile uint32_t MsDelayCnt;
while(t--)
for(MsDelayCnt=0;MsDelayCnt<4800;MsDelayCnt++);
}
//微秒级延时
void DelayUs(uint32_t t)
{
volatile uint32_t UsDelayCnt;
while(t--)
for(UsDelayCnt=0;UsDelayCnt<4;UsDelayCnt++);
}
STM32G0 64M时钟下的粗略延时如下:
//微秒延时
void drv_delay_us(uint32_t t)
{
uint32_t i;
volatile uint32_t j;
for(i=0;i
{
j=6;
while(j--)
__asm("nop");
}
}
//毫秒延时
void drv_delay_ms(uint32_t t)
{
uint32_t i;
for(i=0;i
{
drv_delay_us(1000);
drv_wdt_reset();
}
}
|
|