stm32F103用定时器6用寄存器方式编写延时函数delay_us
时间: 2024-12-21 20:28:35 浏览: 82
STM32F103单片机中,Timer 6是一个16位通用定时器,可以用来实现微秒级的延迟。以下是使用Timer 6寄存器的方式来编写一个简单的延时函数delay_us
:
首先,你需要初始化Timer 6并设置它为计数模式(UP mode)。假设你已将Timer 6配置为工作在TIM6 Prescaler 1 (CLK / 8)下。
// 引用必要的头文件
#include "stm32f1xx_hal.h"
void delay_us(uint16_t us)
{
// Timer 6寄存器地址
RCC_APB2PeriphClockCmd(RCC_APB2Periph_TIM6, ENABLE); // 启动TIM6时钟
TIM_TimeBaseInitTypeDef.TIM_TimeBaseStructure;
TIM_TimeBaseInitTypeDef.TIM_Period = ((SystemCoreClock / 8) - 1) - (us * 8); // 由于Prescaler=1,所以周期需要减去1,并转换成us
TIM_TimeBaseInit(TIM6, &TIM_TimeBaseStructure); // 初始化定时器
// 设置中断为等待触发(IT傑发)
TIM_Cmd(TIM6, DISABLE);
TIM_ITConfig(TIM6, TIM_IT_Update, ENABLE);
NVIC_EnableIRQ(TIM6_IRQn); // 开启中断请求
while (!TIM_GetFlagStatus(TIM6, TIM_FLAG_Update)); // 等待更新标志被置位
TIM_ClearFlag(TIM6, TIM_FLAG_Update); // 清除更新标志
}
阅读全文
相关推荐


















