STM32使用循环进行粗略延时的代码实现
在使用STM32系列单片机进行开发过程中,在不使用定时器进行精准延时的情况下,我们可以使用循环来构造自己的延时函数。
对于STM32F103系列,它的系统时钟为72MHz。可以使用以下函数进行微秒级和毫秒级延时:
//微秒级延时函数
void delay_us(u32 us)
{
u8 i = 0;
while(us--)
{
i = 12;
while(i--);
}
}
//毫秒级延时函数
void delay_ms(u32 ms)
{
u16 i = 0;
while(ms--)
{
i = 14500;
while(i--);
}
}
对于STM32F407系列,它的系统时钟为168MHz。可以使用以下函数进行微秒级和毫秒级延时:
//微秒级延时函数
void delay_us(u32 us)
{
u8 i = 0;
while(us--)
{
i = 42;
while(i--);
}
}
//毫秒级延时函数
void delay_ms(u32 ms)
{
u16 i = 0;
while(ms--)
{
i = 41750;
while(i--);
}
}