文章
博客 网店

 STM32F0/G0延时函数


在程序的调试或硬件测试时经常用到一种阻塞延时函数

下面是在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();
}
}



芯艺工作室    蒙ICP备06005492号
Copyright© 2004-2023 ChipArt Studio All Rights Reserved