(STM32F4) 精準的Delay不透過Timer
时间: 2024-02-12 20:05:57 浏览: 107
STM32F4(系统定时器)
可以使用CPU的循环延时方式来实现精准的Delay。具体实现方式是通过计算CPU的时钟频率以及所需要延时的时间来确定需要循环的次数,从而实现精确延时。代码示例如下:
```c
void delay_us(uint32_t us)
{
uint32_t ticks = us * (SystemCoreClock / 1000000);
for (uint32_t i = 0; i < ticks; i++) {
__NOP();
}
}
void delay_ms(uint32_t ms)
{
for (uint32_t i = 0; i < ms; i++) {
delay_us(1000);
}
}
```
其中,delay_us函数实现微秒级延时,delay_ms函数实现毫秒级延时。在delay_us函数中,通过计算所需延时的CPU时钟周期数来进行循环延时,每个循环中执行一个空操作指令__NOP(),以消耗一个CPU时钟周期。在delay_ms函数中,通过调用delay_us函数实现毫秒级的延时。需要注意的是,使用循环延时方式实现Delay时,需要确保CPU时钟频率是固定的,否则会影响延时的精度。
阅读全文