auto-reload precload:
参考链接:https://blog.csdn.net/qq_35629563/article/details/118675981
- auto-reload precload=Disable:自动重装载寄存器写入新值后,计数器立即产生计数溢出,然后开始新的计数周期
- auto-reload precload=Enable:自动重装载寄存器写入新值后,计数器完成当前旧的计数后,再开始新的计数周期
ouput compare preload:
参考链接:https://blog.csdn.net/qq_16069457/article/details/103684525
如果enable,任何写入TIMx_CCRx事件到来,都不会打断当前计数周期,只能等到计完数了(更新事件),才把TIMx_CCRx传送至当前计数寄存器。
如果disable,任何写入TIMx_CCRx事件到来,都会打断当前计数周期,TIMx_CCRx的值传送至当前计数寄存器。
所以想要实时修改,就设置为disable,前提是auto-reload precload要设置为disable
__HAL_TIM_SET_COUNTER(&TIM2_Handler,arr)
这条语句用来修改ARR就是自动重装在值,就是counter period的值。
__HAL_TIM_SET_PRESCALER(&TIM2_Handler,psc)
这条用来修改psc,就是预分频值
HAL_TIM_SET_AUTORELOAD(__HANDLE, AUTORELOAD)
运行过程中调用该函数修改ARR,就是period的值,无需调用init函数
调频率方法:
void Set_Period(TIM_TypeDef* TIMx, uint32_t Period)
void Set_Period(uint8_t timex, uint32_t Period)
{
if(timex == 2)
{
TIM2->ARR = Period ;
__HAL_TIM_SET_COMPARE(&htim2,TIM_CHANNEL_2,Period / 2);//修改pwm 占空比
}
else
if(timex == 4)
{
TIM4->ARR = Period ;
__HAL_TIM_SET_COMPARE(&htim4,TIM_CHANNEL_1,Period / 2);//修改pwm 占空比
}
}
声明:
本文采用
BY-NC-SA
协议进行授权,如无注明均为原创,转载请注明转自
走着的小站
本文地址: stm32cube定时器配置详细记录
本文地址: stm32cube定时器配置详细记录