admin管理员组文章数量:1595917
发现问题:原以为 __HAL_TIM_SET_AUTORELOAD(&htim1, period); 直接更新便行。
结果是不可靠,有随机的可能性不能更新。这在驱动脉冲式电机驱动器上面,时而卡一下。
分析原因:没有配置自动重载,导致更新周期位置不正确。
解决方法:1.配置自动重载 2.选择定时实时更新 3.关定时器 重启定时器 并配置,
结论:当然是配置自动重载寄存器比较好了,周期到了影子寄存器自动更新。
相关代码:
1.
//TIM_AUTORELOAD_PRELOAD_ENABLE
__HAL_TIM_SET_AUTORELOAD(&htim1, period); //自动重载时 用影子寄存器更新
2.//TIM_AUTORELOAD_PRELOAD_DISABLE
TIM_Base_InitTypeDef TIM_Base;
TIM_Base.Prescaler = 16;
TIM_Base.CounterMode = TIM_COUNTERMODE_UP;
TIM_Base.Period = period;
TIM_Base.ClockDivision = TIM_CLOCKDIVISION_DIV1;
TIM_Base.RepetitionCounter = 0;
TIM_Base.AutoReloadPreload = TIM_AUTORELOAD_PRELOAD_ENABLE;
TIM_Base_SetConfig(TIM1, &TIM_Base);
关键是 TIMx->EGR = TIM_EGR_UG; 需要写入 才更新
版权声明:本文标题:关于STM32 PWM频率 周期 Period更新问题 内容由热心网友自发贡献,该文观点仅代表作者本人, 转载请联系作者并注明出处:https://m.elefans.com/xitong/1728236905a1150528.html, 本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如发现本站有涉嫌抄袭侵权/违法违规的内容,一经查实,本站将立刻删除。
发表评论