stm32f4粗略延时函数
时间: 2025-01-03 18:33:27 浏览: 7
### STM32F4系列粗略延时函数
对于STM32F4系列单片机,在168 MHz的工作频率下,可以设计简单的`while`循环来实现粗略的微秒级和毫秒级延时功能。
#### 微秒级延时函数
为了实现大约1微秒的延迟,定义了一个内部循环次数为42次的嵌套`while`结构:
```c
void my_delay_us(uint32_t us) {
uint8_t i = 0;
while (us--) {
i = 42; // 这里选择42是因为它能提供接近于1μs的延迟[^2]
while (i--);
}
}
```
此方法利用了CPU执行每条指令所需的时间以及编译后的代码特性,使得每次内层循环消耗约等于1微秒的时间长度。然而需要注意的是,这种方法依赖具体的硬件平台及时钟配置情况,因此可能不具备跨平台兼容性或高精度特点。
#### 毫秒级延时函数
同样地,针对更长时间间隔的需求,这里给出了一种基于相同原理但具有更大计数值的毫秒级别延时方案:
```c
void delay_ms(uint32_t ms) {
uint16_t i = 0;
while (ms--) {
i = 41750; // 经过实验得出的大致对应1ms的循环次数
while (i--);
}
}
```
上述两个例子均采用了简单直观的方式实现了基本的软件延时效果,但由于它们本质上还是依靠处理器自身的处理速度而非独立定时器资源完成工作,所以不可避免会受到外界因素干扰而影响最终的实际延时时长准确性。
尽管如此,在某些应用场景中如果对时间控制的要求不是特别严格的话,则这类简易型延时算法仍然能够满足需求并简化编程逻辑。
阅读全文