stm32f103hal库不使用定时器制作秒表
时间: 2025-03-28 14:19:58 浏览: 25
在STM32F103微控制器上,如果不使用定时器制作秒表功能,可以借助其他资源完成类似的功能。一种常见的方式是利用系统滴答(SysTick)计数器结合HAL库实现。
以下是基本思路:
### 1. **初始化SysTick**
SysTick是一个由Cortex-M内核提供的硬件模块,默认频率通常是72MHz(取决于主频)。通过配置SysTick中断时间间隔,我们可以生成精确的时间基准。例如每毫秒触发一次中断。
```c
HAL_Init(); // 初始化HAL库
SystemCoreClockUpdate();
if (HAL_SYSTICK_Config(SystemCoreClock / 1000) != 0)
{
Error_Handler();
}
```
这里我们将`SystemCoreClock`(核心时钟速度设为了72Mhz),并将其除以1000表示每一千次循环对应一秒(即每毫秒进入中断一次)。
然后编写回调函数处理每次发生systick事件的情况:
```c
void SysTick_Handler(void){
static uint32_t count =0;
count++;
if(count >=1000){ // 每秒钟增加一单位时间
sec++; // 秒变量加一
min +=sec/60; // 分钟更新操作省略...
count=0;
}
}
```
以上代码片段展示了如何设置以及维护一个基于SYSTICK机制下的简易数字显示型“秒表”。
不过需要注意的是,这种方式适用于精度需求不是特别高的场合;如果需要更高精度,则还是推荐采用独立的TIMx外设作为专门的时间测量工具更为合适。
阅读全文
相关推荐


















