【保姆级 HAL 库学习定时器】
以下以 STM32 的 HAL 库为例,针对定时器(Timer)的初始化函数进行逐行详解,以定时器基本配置(TIM Base)为例:
示例代码(以 TIM6 为例)
TIM_HandleTypeDef htim6; // 定时器句柄
void MX_TIM6_Init(void)
{
TIM_MasterConfigTypeDef sMasterConfig = {0};
htim6.Instance = TIM6; // 选择定时器 TIM6
htim6.Init.Prescaler = 7199; // 预分频系数
htim6.Init.CounterMode = TIM_COUNTERMODE_UP; // 计数模式:向上计数
htim6.Init.Period = 9999; // 自动重装载值 (ARR)
htim6.Init.AutoReloadPreload = TIM_AUTORELOAD_PRELOAD_DISABLE; // 自动重载预装载使能/禁止
if (HAL_TIM_Base_Init(&htim6) != HAL_OK) // 初始化定时器基础配置
{
Error_Handler();
}
sMasterConfig.MasterOutputTrigger = TIM_TRGO_RESET; // 主输出触发选择
sMasterConfig.MasterSlaveMode = TIM_MASTERSLAVEMODE_DISABLE; // 主从模式
if (HAL_TIMEx_MasterConfigSynchronization(&htim6, &sMasterConfig) != HAL_OK)