systick延时函数
时间: 2023-07-14 09:58:43 浏览: 113
Systick延时函数是一种常用的用于实现延时的方法。它基于ARM Cortex-M系列处理器中的Systick定时器,可以精确地进行微秒级别的延时操作。以下是一个示例的Systick延时函数的实现:
```c
#include "stm32f4xx.h"
void SysTick_Init(void)
{
// 设置Systick时钟为HCLK/8
SysTick->CTRL |= SysTick_CTRL_CLKSOURCE_Msk;
}
void delay_us(uint32_t us)
{
// 设置Systick计数器初始值
SysTick->LOAD = us * (SystemCoreClock / 8000000);
// 清空Systick计数器
SysTick->VAL = 0;
// 等待计时器溢出
while (!(SysTick->CTRL & SysTick_CTRL_COUNTFLAG_Msk));
}
void delay_ms(uint32_t ms)
{
while (ms--)
{
delay_us(1000);
}
}
```
在使用这些函数时,你可以调用`delay_us()`函数来实现微秒级别的延时,或者调用`delay_ms()`函数来实现毫秒级别的延时。例如,`delay_us(100)`表示延时100微秒,`delay_ms(500)`表示延时500毫秒。
请注意,以上代码是基于STM32F4系列MCU的示例,如果你使用其他型号的MCU,需要根据其具体的Systick定时器寄存器地址进行修改。
阅读全文