1.基础定时器
基础定时器相关函数
HAL_TIM_Base_Init(TIM_HandleTypeDef *htim); 定时器初始化,设置各种参数和连续定时模式
HAL_TIM_Base_MspInit() 弱函数,在HAL_TIM_Base_Init()里被调用,需重新实现
HAL_TIM_OnePulse_Init() 将定时器配置为单次定时模式,需要先执行HAL_TIM_Base_Init()
HAL_TIM_Base_Start() 以轮询工作方式启动定时器,不会产生中断
HAL_TIM_Base_Stop() 停止轮询工作方式的定时器
HAL_TIM_Base_Start_IT() 以中断工作方式启动定时器,发生UEV事件时产生中断
HAL_TIM_Base_Stop_IT() 停止中断工作方式定时器的
HAL_TIM_Base_Start_DMA() 以DMA工作方式启动定时器
HAL_TIM_Base_Stop_DMA() 停止DMA工作方式的定时器
HAL_TIM_Base_GetState(TIM_HandleTypeDef *htim) 获取基础定时器的当前状态
其他通用操作函数
__HAL_TIM_ENABLE(__HANDLE__) 启 用 某 个 定 时 器 , 就 是 将 定 时 器 控 制 寄 存 器TIMx_CR1的CEN位置1
__HAL_TIM_DISABLE() 禁用某个定时器
__HAL_TIM_GET_COUNTER() 在运行时读取定时器的当前计数值 , 就 是读 取TIMx_CNT寄存器的值
__HAL_TIM_SET_COUNTER() 在运行时设置定时器的计数值,就是设置TIMx_CNT寄存器的值
__HAL_TIM_GET_AUTORELOAD() 在运行时读取自重载寄存器TIMx_ARR的值
__HAL_TIM_SET_AUTORELOAD() 在运行时设置自重载寄存器TIMx_ARR的值,并改变定时的周期
__HAL_TIM_SET_PRESCALER() 在运行时设置与分频系数,就是设置分频寄存器TIMx_PSC的值
4.中断处理
__HAL_TIM_GET_FLAG() 获取某个事件是否触发的标志,就是读取状态寄存器TIMx_SR中相应的中断事件位是否置1
__HAL_TIM_GET_IT_SOURCE() 判断是否是某个事件产生的中断,返回值为SET或RESET
__HAL_TIM_CLEAR_IT() 清除某个事件的中断标志,就是将状态寄存器TIMx_SR中相应的中断事件位是否置0
__HAL_TIM_ENABLE_IT() 启用某个事件的中断,就是将中断使能寄存器TIMx_DIER中相应事件位置1
__HAL_TIM_DISABLE_IT() 禁用某个事件的中断,就是将中断使能寄存器TIMx_DIER中相应事件位置0
HAL_TIM_IRQHandler() 定时器ISR函数里的通用处理函数
HAL_TIM_PeriodElapsedCallback(htim) 弱函数,UEV事件中断的回调函数
5使用示例
有tim6和tim7,使用tim6举例:
1.在引脚界面选择引脚对应模式为tim6_ch1
2.将HCLK设置为100MHz,APB1和APB2时钟50MHz,方便计算
3.在Timer界面选择Tim6,勾选Actived启动Tim6,Prescalar预分频值49999,实际分频值为50000,Counter Period计数周期,也就是自动重装载寄存器ARR的值,设置为500,NVIC界面使能TIM6全局中断及UEV事件中断使能,此时Tim6每500ms产生一次硬件中断。要时勾选One Pulse Mode则只中断一次。
4.在程序中使用HAL_TIM_Base_Start_IT(&htim6);以中断方式启动TIM6.
5.在void TIM6_DAC_IRQHandler(void)中会调用回调函数,所以只需要重写回调函数。
6

本文详细介绍STM32定时器的基础配置与高级功能,包括定时器初始化、PWM波形生成、输入捕获等功能的实现方法。
最低0.47元/天 解锁文章
7035

被折叠的 条评论
为什么被折叠?



