[STM32] 實時修改PWM波的輸出頻率

    最近在做PWM的電機控制,需要通過修改PWM的頻率來控制電機的速度。

    使用如下的函數:

    void TIM_SetAutoreload(TIM_TypeDef* TIMx, uint32_t Autoreload);

    該函數可修改定時器的ARR值,使得定時器的週期改變。

    在使用時,總是會隨機的出現PWM輸出消失的情況,通過排查,在調用TIM_SetAutoreload()函數時,需要初始化使能定時器的Preload功能,調用如下函數:

    void TIM_ARRPreloadConfig(TIM_TypeDef* TIMx, FunctionalState NewState)

    TIM_ARRPreloadConfig(TIM2,ENABLE);

    該功能使能是,ARR的值先暫存在影子寄存器,帶ARR溢出後再更新ARR的值。

    使能該功能後,該問題解決。

發表評論
所有評論
還沒有人評論,想成為第一個評論的人麼? 請在上方評論欄輸入並且點擊發布.
相關文章