STM32H7B0的延时函数代码
时间: 2024-08-13 22:07:21 浏览: 54
STM32H7B0系列微控制器提供了硬件计时器和软件延时函数供开发者使用。这里我们可以介绍一种常见的基于系统定时器的软件延时实现方法,例如使用SysTick定时器。
```c
#include "stm32h7xx_hal.h"
// 延迟宏定义,单位为毫秒
#define DELAY_MS(ms) \
{ \
uint32_t delayticks = (ms) * HAL_RCC_GetPCLK1Freq() / 1000; \
while (delayticks > 0) { \
if ((HAL_GetTick() % 2000) == 0) { // 防止CPU过载,这里假设SysTick频率是2MHz,每次检查tick位20次 \
HAL_Delay(1); // 每检查一次,让CPU休息一下 \
} \
delayticks--; \
} \
}
void my_delay(uint32_t milliseconds)
{
DELAY_MS(milliseconds);
}
```
在这个例子中,我们首先计算了需要的Tick数量,然后在一个循环里不断减小这个计数,同时检查SysTick寄存器的值,以避免过度占用CPU。每次SysTick计数器的值变化时(这里假设频率为2MHz),就执行一次`HAL_Delay(1)`,这样可以提供一个近似的延时效果。
阅读全文