stm32F103 hal库 滴答定时器
时间: 2025-02-18 12:49:12 浏览: 47
### STM32F103 使用 HAL 库实现滴答定时器
#### 初始化系统滴答定时器
初始化过程中,`HAL_Init()` 函数会调用 `HAL_InitTick()` 来配置系统滴答定时器[^1]。此过程确保了系统的时基被正确设置。
```c
// 主函数入口
int main(void)
{
// 初始化所有外设、Flash接口和Systick
HAL_Init();
// 用户应用代码开始处
}
```
#### 获取当前系统时间
为了方便开发者获取自系统启动以来的时间流逝情况,提供了 `HAL_GetTick()` 函数用于返回已经过去的毫秒数[^2]:
```c
uint32_t currentTime;
currentTime = HAL_GetTick(); // 获得当前的tick值
```
#### 实现精确延时
通过 `HAL_Delay()` 函数可以轻松实现基于滴答定时器的阻塞式延迟操作,参数为所需的等待毫秒数:
```c
HAL_Delay(1000); // 延迟1秒钟
```
#### SysTick 定时器特性说明
SysTick 是一个24位向下计数的定时器,默认情况下其时钟来源于 HCLK 或者是 HCLK/8 的频率。作为 Cortex-M 架构的一部分,它主要用于提供稳定可靠的时间基准服务给操作系统或者其他应用程序使用[^4]。
#### 配置并启用中断驱动模式下的定时事件处理
如果希望利用硬件资源更高效的方式来进行周期性的任务调度,则可以通过开启定时器中断的方式来完成特定的功能开发工作。下面展示了一个简单例子,在这里选择了 TIM2 进行每过一定间隔触发一次 GPIO 切换的操作[^5]:
```c
/* 中断回调函数 */
void HAL_TIM_PeriodElapsedCallback(TIM_HandleTypeDef *htim)
{
if (htim->Instance == TIM2) {
HAL_GPIO_TogglePin(GPIOC, GPIO_PIN_13);
}
}
// 启动TIM2基础定时器,并允许其中断请求
HAL_TIM_Base_Start_IT(&htim2);
```
阅读全文
相关推荐


















