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

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

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

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

311.73 KB

問(wèn)題提出

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

問(wèn)題分析

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

解決方法

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

小結(jié)

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

資料預(yù)覽

相關(guān)推薦