用stm32f103实现长时间延时的代码
时间: 2024-09-23 07:01:41 浏览: 25
在STM32F103微控制器上实现长时间延时,通常可以利用定时器功能。这里是一个基本的示例,使用系统节拍间隔(Ticks)来设置延时:
```c
#include "stm32f1xx_hal.h"
// 假设你已经配置了TIM2定时器用于延时计数
TIM_HandleTypeDef htim2;
void Delay(uint32_t timeout) {
// 首先,初始化TIM2定时器
htim2.Instance = TIM2;
htim2.Init.Prescaler = (uint16_t)(SystemCoreClock / 1000 - 1); // 计算合适的预分频值,这里假设系统时钟是72MHz,延时1s大约需要8999周期
htim2.Init.CounterMode = TIM_COUNTERMODE_UP; // 上升计数模式
htim2.Init.Period = 0xffff; // 设置最大周期数(取决于你的系统配置)
HAL_TIM_Base_Init(&htim2);
// 开启定时器
HAL_TIM_Base_Start_IT(&htim2);
// 等待定时器溢出完成延时时长
while (timeout--) {
__WFI(); // 这里休眠处理器直到定时器中断唤醒
}
// 关闭定时器
HAL_TIM_Base_Stop_IT(&htim2);
}
阅读全文