STM32常用delay函数
时间: 2023-09-26 12:14:27 浏览: 90
在STM32中常用的延时函数有以下几种:
1. 使用for循环延时。这种方法最简单,但缺点是CPU会处于忙等待状态,浪费CPU资源。
```c
void Delay(uint32_t nCount) {
for(; nCount != 0; nCount--);
}
```
2. 使用HAL库提供的延时函数。这种方法可以使用硬件定时器,不会占用CPU资源,精度高,但是需要初始化定时器,占用一定的资源。
```c
HAL_Delay(1000); // 延时1秒
```
3. 使用SysTick定时器。SysTick是一个内核定时器,可以用来产生延时。这种方法可以在任何时候调用,不需要初始化定时器,不会占用CPU资源。
```c
void Delay(uint32_t nTime) {
TimingDelay = nTime;
while(TimingDelay != 0);
}
void SysTick_Handler(void) {
if(TimingDelay != 0) {
TimingDelay--;
}
}
```
其中,TimingDelay是一个全局变量,SysTick_Handler是SysTick的中断处理函数。在main函数中需要调用SysTick_Config函数初始化SysTick定时器。
```c
if(SysTick_Config(SystemCoreClock / 1000)) {
Error_Handler();
}
```
这样可以将SysTick定时器的时钟设置为系统时钟的1/1000,即1毫秒。
阅读全文