STM32F103C8T6系统时钟为72MHz时,毫秒延时函数标准库代码
时间: 2024-04-17 07:27:08 浏览: 115
在STM32F103C8T6芯片上,可以使用SysTick定时器来实现毫秒级的延时。下面是使用标准库函数在系统时钟为72MHz时实现毫秒延时的代码示例:
```c
#include "stm32f10x.h"
volatile uint32_t ticks_ms = 0; // 毫秒计数器
void SysTick_Handler(void)
{
ticks_ms++;
}
void Delay_ms(uint32_t milliseconds)
{
uint32_t start = ticks_ms;
while ((ticks_ms - start) < milliseconds)
{
}
}
int main(void)
{
// 初始化SysTick定时器,设置为1ms间隔
if (SysTick_Config(SystemCoreClock / 1000))
{
while (1);
}
while (1)
{
// 延时1秒
Delay_ms(1000);
// 在此处执行其他任务
}
}
```
在这段代码中,SysTick定时器被配置为每1毫秒触发一次中断。在中断处理函数`SysTick_Handler()`中,毫秒计数器`ticks_ms`会自增。然后,我们可以使用`Delay_ms()`函数来实现指定毫秒数的延时。
在`main()`函数中,我们初始化了SysTick定时器,并进入一个无限循环。每隔1秒,我们调用`Delay_ms()`函数来实现延时,并在延时期间可以执行其他任务。
请注意,使用SysTick定时器实现延时是一个简单的方法,但是它是基于软件的延时,可能会有一定的误差。如果需要更精确的延时,可以使用硬件定时器来实现。
阅读全文