stm32f103rct6利用内部时钟延时1us的函数
时间: 2024-05-04 13:20:57 浏览: 131
STM32F103延时函数
stm32f103rct6的内部时钟频率为72MHz,因此可以利用SysTick定时器来实现1us的延时。
以下是一个简单的函数实现:
```C
void delay_us(uint32_t us)
{
SysTick->LOAD = us * (SystemCoreClock / 1000000); // 设置定时器装载值
SysTick->VAL = 0; // 清空计数器
SysTick->CTRL = SysTick_CTRL_ENABLE_Msk; // 启用定时器
while((SysTick->CTRL & SysTick_CTRL_COUNTFLAG_Msk) == 0); // 等待计数器溢出
SysTick->CTRL = 0; // 禁用定时器
}
```
该函数将延时时间us转换为定时器的装载值,并启用定时器进行计数。当计数器溢出时,函数会退出并禁用定时器。需要注意的是,该函数可能会有一定的误差,因为SysTick定时器的时钟源来自内部时钟,而内部时钟的精度可能不够高。如果需要更高精度的延时,可以使用外部时钟源。
阅读全文