/** ****************************************************************************** * @文件 gtim.c * @作者 阜阳师范大学物电学院 * @版本 V0.1 * @日期 2025-04-1 * @简介 通用定时器模板程序 **** */ #include "gtim.h" #include "key.h" TIM_HandleTypeDef g_timx_handle = {0}; /* 定时器句柄 */ /** * @brief 通用定时器 TIMx 定时中断初始化函数 * @note * 定时器溢出时间计算方法: Tout = ((arr+1) * (psc + 1)) / Ft us * Ft=晶振工作频率:Mhz * * @param arr: 自动重装载值 * @param psc: 时钟预分频数 * @retval 无 */ void gtim_timx_int_init(uint16_t arr, uint16_t psc) { GTIM_TIMX_INT_CLK_ENABLE(); /* 使能 TIMx 时钟 */ g_timx_handle.Instance = GTIM_TIMX_INT; /* 通用定时器x */ g_timx_handle.Init.Prescaler = psc; /* 预分频系数 */ g_timx_handle.Init.CounterMode = TIM_COUNTERMODE_UP; /* 递增计数模式 */ g_timx_handle.Init.Period = arr; /* 自动装载值 */ HAL_TIM_Base_Init(&g_timx_handle); /*数字越小,优先级越高*/ HAL_NVIC_SetPriority(GTIM_TIMX_INT_IRQn, 2, 0); /* 设置中断优先级,抢占优先级2,子优先级0 */ HAL_NVIC_EnableIRQ(GTIM_TIMX_INT_IRQn); /* 开启 TIMx 中断 */ HAL_TIM_Base_Start_IT(&g_timx_handle); /* 使能定时器 x 和定时器 x 更新中断 */ }