STM32F103 滴答定时器
时间: 2025-07-19 18:50:06 浏览: 1
### STM32F103 滴答定时器实现与配置教程
#### 什么是滴答定时器?
滴答定时器(SysTick Timer)是一个基于 ARM Cortex-M 内核的硬件定时器,广泛用于嵌入式开发中的时间管理。它能够提供高精度的时间延迟和周期性的中断触发功能,在 STM32F103 中常用来实现精确延时[^1]。
#### 配置方法
以下是通过 SysTick 实现精确延时的具体配置过程:
1. **初始化 SysTick 定时器**
初始化函数通常命名为 `Systick_Config` 或类似的名称,其主要目的是设置重装载寄存器值以及使能 SysTick 计数器和中断。
```c
void Systick_Config(uint32_t ticks) {
if (ticks > 0) {
SysTick->LOAD = ticks - 1; // 设置重装载值
SysTick->VAL = 0; // 清零当前计数值
SysTick->CTRL = 0x07; // 启用 SysTick 并使用系统时钟作为源
}
}
```
上述代码中,`ticks` 参数表示每次溢出所需的时间间隔,单位由系统时钟决定[^4]。
2. **编写延时函数**
基于上述初始化函数,可以进一步定义一个延时函数来控制具体毫秒级或微秒级的延时操作。
```c
void delay_ms(uint32_t ms) {
uint32_t reload_value;
reload_value = SystemCoreClock / 1000; // 根据系统核心频率计算每毫秒对应的重载值
while(ms--) {
Systick_Config(reload_value); // 调用初始化函数并等待一次溢出完成
while(!(SysTick->CTRL & 0x10000)); // 等待 COUNTFLAG 变为有效状态
}
}
```
这里利用了循环调用的方式实现了指定长度的延时效果[^2]。
3. **注意事项**
- 在实际应用过程中需要注意不同型号 MCU 的最大支持范围及其对应参数调整;
- 如果项目中有其他更高优先级的任务,则可能会影响最终的实际延时时长准确性[^3]。
#### 总结
通过对以上内容的学习可知,合理运用好 STM32 提供的各种外设资源可以帮助开发者更高效便捷地构建自己的应用程序框架结构;而像这样简单易懂又实用性强的小技巧更是值得每一位初学者深入掌握!
```c
// 示例完整代码片段
void Systick_Config(uint32_t ticks);
void delay_ms(uint32_t ms);
int main(void){
HAL_Init(); // 初始化HAL库
SystemClock_Config(); // 配置系统时钟
Systick_Config(SystemCoreClock/1000);// 设定一秒钟内的滴答次数
while(1){
GPIO_TogglePin(GPIOA,GPIO_PIN_5); // 切换LED灯状态
delay_ms(500); // 延迟半秒
}
}
```
阅读全文
相关推荐


















