STM32和keil5嵌入式实验:.缩写一个硬件延时函数delay(uint32ms),参数为需要的延时的毫秒数,调用实现任意毫秒延时。
时间: 2024-02-23 07:58:18 浏览: 9
可以使用SysTick定时器来实现硬件延时函数delay(uint32_t ms),具体步骤如下:
1. 在main函数中初始化SysTick定时器,使其每个1ms中断一次。
```c
void SysTick_Init(void)
{
SysTick->CTRL |= (0 << 2); //时钟源为HCLK/8
SysTick->LOAD = SystemCoreClock / 8000; //计数器值,每1ms中断一次
SysTick->CTRL |= (1 << 1); //开启中断
SysTick->CTRL |= (1 << 0); //开启计数器
}
```
2. 在delay函数中使用SysTick计数器进行延时。
```c
void delay(uint32_t ms)
{
uint32_t i;
for (i = 0; i < ms; i++)
{
while (!(SysTick->CTRL & (1 << 16))); //等待计数器减到0
}
}
```
在上述delay函数中,我们使用了SysTick计数器进行延时。每次进入for循环,都会等待SysTick计数器减到0,也就是等待1ms的时间。循环ms次,就可以实现任意毫秒数的延时。
注意:在使用delay函数时,需要先调用SysTick_Init函数初始化SysTick定时器。
阅读全文