stm32f103使用定时器2写一个延迟函数,延迟一秒,标准库
时间: 2024-10-13 15:09:43 浏览: 36
STM32F103微控制器上有一个高级定时器,如Timer 2,可以用于实现延时功能。为了创建一个简单的基于Timer 2的一秒延迟函数,你可以按照以下步骤操作:
首先,你需要初始化Timer 2并设置它为PWM模式,以便于计数而不是连续计时。这里假设你已经在系统配置中启用了Timer 2。
```c
#include "stm32f1xx_hal.h"
void init_Timer2(void) {
TIM_HandleTypeDef htim2;
htim2.Instance = TIM2; // Timer 2实例
htim2.Init.Prescaler = 8399; // 根据系统时钟调整预分频值,通常是系统时钟频率除以4000万减去1
htim2.Init.CounterMode = TIM_COUNTERMODE_UP; // 单向递增
htim2.Init.Period = 0x7FF; // 设置周期,最大为TIM2_MAX_PERIOD
HAL_TIM_Base_Init(&htim2);
HAL_TIM_Base_Start(&htim2); // 启动定时器
}
// 延迟函数
void delay_1s(void) {
init_Timer2();
while (1) { // 当然这会是一个无限循环,需要外部中断或者其他机制来结束延迟
if (HAL_TIM_GetOverrun(&htim2) != RESET) {
break; // 如果发生溢出,说明已经过了一定的时间间隔
}
}
}
```
在这个例子中,`delay_1s`函数首先启动Timer 2,并在一个死循环里检查是否发生了溢出。当溢出事件发生时,我们知道已经过去了大约一秒时间。
阅读全文