使用STM32编写一个延时函数
时间: 2024-05-02 09:21:42 浏览: 118
以下是使用STM32编写的延时函数示例:
```
#include "stm32f4xx.h"
void delay_ms(uint32_t ms)
{
uint32_t i;
for(i = 0; i < ms; i++)
{
// 设置SysTick定时器
SysTick->LOAD = SystemCoreClock / 1000 - 1; // 设置定时器重装载值
SysTick->VAL = 0; // 清空计数器
SysTick->CTRL = SysTick_CTRL_ENABLE_Msk; // 启用定时器
// 等待定时器计数结束
while((SysTick->CTRL & SysTick_CTRL_COUNTFLAG_Msk) == 0);
// 关闭定时器
SysTick->CTRL = 0;
}
}
int main(void)
{
// 初始化SysTick定时器
SysTick_Config(SystemCoreClock / 1000);
// 延时1秒
delay_ms(1000);
return 0;
}
```
此延时函数使用SysTick定时器实现,该定时器是一个24位递减计数器,可用于生成定期中断或延时。在此函数中,我们设置SysTick定时器的重装载值为系统时钟频率除以1000,以得到1毫秒的延时。在循环中,我们启用定时器并等待计数结束,然后关闭定时器。最后,我们在主函数中使用该延时函数延时1秒。
阅读全文