• 資料介紹
    • 問題提出
    • 問題分析
    • 解決方法
    • 小結(jié)
  • 資料預(yù)覽
  • 相關(guān)推薦
申請入駐 產(chǎn)業(yè)圖譜

LAT1183 高精度定時器中single-shot計數(shù)模式不工作

03/26 09:30
358
加入交流群
掃碼加入
獲取工程師必備禮包
參與熱點資訊討論

LAT1183 高精度定時器中single-shot計數(shù)模式不工作

311.73 KB

問題提出

客戶使用 STM32G474 的高精度定時器,基于 CubeMX 進(jìn)行外設(shè)配置與代碼生成,將某個子定時器的計數(shù)方式設(shè)置為 retriggerable single shot 方式,發(fā)現(xiàn)該子定時器無 PWM 輸出,在調(diào)試模式下發(fā)現(xiàn)該子定時器的計數(shù)器一直為 0,即計數(shù)器一直沒有啟動,但如果將計數(shù)方式修改為continuous 模式,其他保持不變,定時器工作正常。

問題分析

檢查客戶提供的 CubeMx 配置文件,客戶使能了 Master Timer 與 Timer B,Master Timer 的比較器事件 2 觸發(fā) Timer B 復(fù)位與運行,并配置了 Timer B 的 PWM 輸出,使用該工程文件直接生成代碼,并添加高精度定時器計數(shù)使能與輸出使能函數(shù)。

解決方法

基于以上分析,造成該問題的主要原因是 CubeMx 基于 HAL 庫自動生成的初始化代碼中沒有考慮不同的寄存器更新配置方式,只是單一的采用軟件更新的方式來觸發(fā)寄存器更新。要解決以上問題,需要修改代碼中的定時器初始化的時序,在配置寄存器更新方式為“Update taken intoaccount on the following Reset/Roll-over event”前,讓其他的配置先生效,基本邏輯如下,該邏輯在客戶自己編寫初始化代碼時也需要遵循。

小結(jié)

解決客戶提出的高精度定時器中的子定時器在 retriggerable single shot 計數(shù)模式下無法工作的問題,原因在于該計數(shù)模式下,當(dāng)更新配置方式為“ Update taken into account on the followingReset/Roll-over event ”時,使用 CubeMx 生成的原始初始化代碼出現(xiàn)了定時器配置無法生效,從而導(dǎo)致問題的出現(xiàn)。通過對初始化代碼的邏輯進(jìn)行簡單修改,問題得以解決。當(dāng)然,STM32CubeMx 的未來版本應(yīng)會就這個地方做針對性地完善。

資料預(yù)覽

相關(guān)推薦