0
  • 聊天消息
  • 系統(tǒng)消息
  • 評(píng)論與回復(fù)
登錄后你可以
  • 下載海量資料
  • 學(xué)習(xí)在線課程
  • 觀看技術(shù)視頻
  • 寫(xiě)文章/發(fā)帖/加入社區(qū)
會(huì)員中心
电子发烧友
开通电子发烧友VIP会员 尊享10大特权
海量资料免费下载
精品直播免费看
优质内容免费畅学
课程9折专享价
創(chuàng)作中心

完善資料讓更多小伙伴認(rèn)識(shí)你,還能領(lǐng)取20積分哦,立即完善>

3天內(nèi)不再提示

應(yīng)用筆記 | 高精度定時(shí)器中single-shot計(jì)數(shù)模式不工作

STM32單片機(jī) ? 來(lái)源:未知 ? 2023-08-09 17:45 ? 次閱讀

關(guān)鍵字:高精度定時(shí)器,Single-shot 計(jì)數(shù)模式

目錄預(yù)覽

1 問(wèn)題提出2 問(wèn)題分析3 解決辦法4 小結(jié)

1. 問(wèn)題提出

客戶(hù)使用STM32G474的高精度定時(shí)器,基于CubeMX進(jìn)行外設(shè)設(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í)器工作正常

2.問(wèn)題描述

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

1229c950-3698-11ee-9e74-dac502259ad0.png

進(jìn)入調(diào)試模式觀察,發(fā)現(xiàn)Master Timer正常計(jì)數(shù),但是Timer B的計(jì)數(shù)器一直保持0,按照客戶(hù)的描述,將Timer B的計(jì)數(shù)方式修改為“continous”后,Timer B恢復(fù)正常計(jì)數(shù)。對(duì)比Timer B在“retriggerable single shot”與“continous”兩種工作模式下的相關(guān)寄存器的值進(jìn)行對(duì)比,發(fā)現(xiàn)除了計(jì)數(shù)模式不同之外,其他所有狀態(tài)都相同。

莫非真是“retriggerable single shot”存在問(wèn)題?這明顯不可能,此前多次使用過(guò)該模式并沒(méi)有發(fā)現(xiàn)問(wèn)題,于是將以前設(shè)計(jì)的能成功工作的例程拿來(lái)與該“問(wèn)題”工程進(jìn)行對(duì)比。經(jīng)過(guò)比對(duì)分析發(fā)現(xiàn),工程設(shè)置中使用的寄存器更新方式存在不同,如下圖所示:

12695f84-3698-11ee-9e74-dac502259ad0.png

圖1.正常工作工程中的寄存器更新配置

1288dc42-3698-11ee-9e74-dac502259ad0.png

圖2.“問(wèn)題”工作工程中的寄存器更新配置

“問(wèn)題”工程配置中使用Master Timer的更新作為觸發(fā)寄存器更新觸發(fā)源,并且更新要等到本定時(shí)器的下一次的Reset/Roll-over事件出現(xiàn)時(shí)才生效。通過(guò)將“Update taken into account on the following Reset/Roll-over event”修改為“Update taken into account immediately”,定時(shí)器也可以正常運(yùn)行了,問(wèn)題的原因就是由于該配置引起的。

查看該配置對(duì)應(yīng)的寄存器說(shuō)明:

12a29146-3698-11ee-9e74-dac502259ad0.png

當(dāng)配置“Update taken into account on the following Reset/Roll-over event”對(duì)應(yīng)于該位置“1”,即更新事件,無(wú)論是來(lái)自相鄰定時(shí)器的還是軟件產(chǎn)生的,都需要等到下一個(gè)Reset/Roll-over event才生效。

在直接使用CubeMX產(chǎn)生的HAL底層配置代碼且配置中使能了預(yù)加載的情況下,該寄存器更新配置方式會(huì)導(dǎo)致Timer B的初始化配置無(wú)法生效。

如圖3/4/5所顯示的,因?yàn)樵贑ubeMX直接生成的代碼中,Timer B參數(shù)的配置通過(guò)調(diào)用函數(shù)HAL_HRTIM_WaveformTimerConfig()寫(xiě)入寄存器,然后在該函數(shù)中調(diào)用軟件更新函數(shù)HRTIM_ForceRegistersUpdate()的方式讓配置生效,那么在目前的配置下,軟件觸發(fā)更新也必須等待Reset/Roll-over event的出現(xiàn)。而在retriggerable single shot計(jì)數(shù)模式下,定時(shí)器不能自動(dòng)啟動(dòng)計(jì)數(shù),必須等待來(lái)自Master Timer的Reset事件(即前文提到的比較器事件2)

12e47e9e-3698-11ee-9e74-dac502259ad0.png

圖3.“問(wèn)題”工程中的寄存器更新與定時(shí)器Reset配置

13021486-3698-11ee-9e74-dac502259ad0.png

圖4.“問(wèn)題”工程產(chǎn)生的Timer B初始化代碼

13267a6a-3698-11ee-9e74-dac502259ad0.png

圖5.Timer B初始化代碼中調(diào)用軟件觸發(fā)更新

綜上,雖然正確地配置了Reset事件,Master Timer也正常計(jì)數(shù)且產(chǎn)生了比較事件2,但問(wèn)題在于在運(yùn)行了初始化代碼后,該配置僅僅是寫(xiě)到了preload寄存器中,而沒(méi)有寫(xiě)入active寄存器中,即Timer B的復(fù)位源沒(méi)有生效,帶來(lái)的后果就是Timer B的計(jì)數(shù)器不運(yùn)行,一直保持0,且所有帶有預(yù)加載特性的寄存器的值也沒(méi)有生效。

作為對(duì)比,當(dāng)配置為“Update taken into account immediately”時(shí),調(diào)用軟件觸發(fā)更新函數(shù)HRTIM_ForceRegistersUpdate()函數(shù),將使所有配置立即生效,定時(shí)器可正常工作。

3. 解決方法

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

13632a64-3698-11ee-9e74-dac502259ad0.png

4.小結(jié)

解決客戶(hù)提出的高精度定時(shí)器中的子定時(shí)器在retriggerable single shot計(jì)數(shù)模式下無(wú)法工作的問(wèn)題,原因在于該計(jì)數(shù)模式下,當(dāng)更新配置方式為“Update taken into account on the following Reset/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ì)性地完善。

完整內(nèi)容請(qǐng)點(diǎn)擊“閱讀原文”下載原文檔。

長(zhǎng)按掃碼關(guān)注公眾號(hào)

更多資訊,盡在STM32

點(diǎn)擊“閱讀原文”,可下載原文檔


原文標(biāo)題:應(yīng)用筆記 | 高精度定時(shí)器中single-shot計(jì)數(shù)模式不工作

文章出處:【微信公眾號(hào):STM32單片機(jī)】歡迎添加關(guān)注!文章轉(zhuǎn)載請(qǐng)注明出處。

聲明:本文內(nèi)容及配圖由入駐作者撰寫(xiě)或者入駐合作網(wǎng)站授權(quán)轉(zhuǎn)載。文章觀點(diǎn)僅代表作者本人,不代表電子發(fā)燒友網(wǎng)立場(chǎng)。文章及其配圖僅供工程師學(xué)習(xí)之用,如有內(nèi)容侵權(quán)或者其他違規(guī)問(wèn)題,請(qǐng)聯(lián)系本站處理。 舉報(bào)投訴
  • 單片機(jī)
    +關(guān)注

    關(guān)注

    6065

    文章

    44946

    瀏覽量

    647993
  • STM32
    +關(guān)注

    關(guān)注

    2290

    文章

    11018

    瀏覽量

    362935

原文標(biāo)題:應(yīng)用筆記 | 高精度定時(shí)器中single-shot計(jì)數(shù)模式不工作

文章出處:【微信號(hào):STM32_STM8_MCU,微信公眾號(hào):STM32單片機(jī)】歡迎添加關(guān)注!文章轉(zhuǎn)載請(qǐng)注明出處。

收藏 0人收藏

    評(píng)論

    相關(guān)推薦
    熱點(diǎn)推薦

    MCU定時(shí)器/計(jì)數(shù)器

    RISC-V核低功耗MCU通過(guò)靈活的定時(shí)器架構(gòu)、低功耗模式適配及硬件級(jí)中斷優(yōu)化,在工業(yè)控制、智能家居等場(chǎng)景實(shí)現(xiàn)高精度計(jì)時(shí)與能耗控制的協(xié)同設(shè)計(jì),滿(mǎn)足復(fù)雜任務(wù)調(diào)度與實(shí)時(shí)響應(yīng)的雙重需求?。
    的頭像 發(fā)表于 04-27 13:54 ?210次閱讀

    TPS3851 帶集成看門(mén)狗定時(shí)器高精度電壓監(jiān)控數(shù)據(jù)手冊(cè)

    TPS3851 將精密電壓監(jiān)控與可編程看門(mén)狗定時(shí)器相結(jié)合。TPS3851比較的欠壓 (V ) 精度為 0.8% (–40°C 至 +125°C) ~ITN~ ) 閾值。該TPS38
    的頭像 發(fā)表于 04-10 16:04 ?295次閱讀
    TPS3851 帶集成看門(mén)狗<b class='flag-5'>定時(shí)器</b>的<b class='flag-5'>高精度</b>電壓監(jiān)控<b class='flag-5'>器</b>數(shù)據(jù)手冊(cè)

    TPS3852 高精度電壓監(jiān)控,帶可編程窗口看門(mén)狗定時(shí)器數(shù)據(jù)手冊(cè)

    TPS3852包括精確的磁滯,使該器件成為 與嚴(yán)格公差系統(tǒng)一起使用。監(jiān)控?RESET?延遲具有 15% 精度高,高精度延時(shí)定時(shí)器。
    的頭像 發(fā)表于 04-10 15:30 ?301次閱讀
    TPS3852 <b class='flag-5'>高精度</b>電壓監(jiān)控<b class='flag-5'>器</b>,帶可編程窗口看門(mén)狗<b class='flag-5'>定時(shí)器</b>數(shù)據(jù)手冊(cè)

    TPS3852-Q1 汽車(chē)級(jí)高精度電壓監(jiān)控,帶集成窗口看門(mén)狗定時(shí)器數(shù)據(jù)手冊(cè)

    溫度范圍內(nèi)實(shí)現(xiàn) 0.8% 的精度。 此外,TPS3852-Q1 具有精確的磁滯,使該器件非常適合與緊公差系統(tǒng)一起使用。監(jiān)控?RESET?delay 具有 15% 精度高精度延遲
    的頭像 發(fā)表于 04-10 15:08 ?287次閱讀
    TPS3852-Q1 汽車(chē)級(jí)<b class='flag-5'>高精度</b>電壓監(jiān)控<b class='flag-5'>器</b>,帶集成窗口看門(mén)狗<b class='flag-5'>定時(shí)器</b>數(shù)據(jù)手冊(cè)

    TPS3851-Q1 帶集成看門(mén)狗定時(shí)器的汽車(chē)級(jí)高精度電壓監(jiān)控數(shù)據(jù)手冊(cè)

    TPS3851-Q1 器件將精密電壓監(jiān)控與可編程看門(mén)狗定時(shí)器相結(jié)合。TPS3851-Q1 比較在欠壓 (V 下) 的精度為 0.8% (–40°C 至 +125°C) ~ITN~
    的頭像 發(fā)表于 04-10 14:45 ?261次閱讀
    TPS3851-Q1 帶集成看門(mén)狗<b class='flag-5'>定時(shí)器</b>的汽車(chē)級(jí)<b class='flag-5'>高精度</b>電壓監(jiān)控<b class='flag-5'>器</b>數(shù)據(jù)手冊(cè)

    ADS1298 single-shot模式數(shù)據(jù)未轉(zhuǎn)換是怎么回事?

    采用STM32和ADS1298開(kāi)發(fā)12導(dǎo)心電測(cè)量?jī)x。ADS1298配置為continuous模式已經(jīng)工作正常,現(xiàn)在要改為single-shot模式。在
    發(fā)表于 12-23 07:41

    使用ads1219這款模數(shù)轉(zhuǎn)換,讀寫(xiě)流程和使用single-shot模式和continuous的區(qū)別是什么?

    我最近在使用ads1219這款模數(shù)轉(zhuǎn)換,遇到一些問(wèn)題,我是想通過(guò)FPGA來(lái)讀取ADS1219的兩路單端的模擬信號(hào),在疑惑是讀寫(xiě)流程和使用single-shot模式和continuous的區(qū)別
    發(fā)表于 12-10 06:12

    高級(jí)定時(shí)器PWM輸入模式的配置方法

    我們將向大家介紹高級(jí)定時(shí)器的另一個(gè)常見(jiàn)應(yīng)用——PWM輸入模式。在本節(jié)課,我們將先圍繞輸入捕獲模式展開(kāi),并重點(diǎn)描述PWM輸入模式和涉及的寄存
    的頭像 發(fā)表于 11-08 16:48 ?4161次閱讀
    高級(jí)<b class='flag-5'>定時(shí)器</b>PWM輸入<b class='flag-5'>模式</b>的配置方法

    如何在MSP430?上實(shí)現(xiàn)內(nèi)置振蕩高精度定時(shí)器

    電子發(fā)燒友網(wǎng)站提供《如何在MSP430?上實(shí)現(xiàn)內(nèi)置振蕩高精度定時(shí)器.pdf》資料免費(fèi)下載
    發(fā)表于 09-14 11:10 ?0次下載
    如何在MSP430?上實(shí)現(xiàn)內(nèi)置振蕩<b class='flag-5'>器</b>的<b class='flag-5'>高精度</b><b class='flag-5'>定時(shí)器</b>

    定時(shí)器的基本組成和工作模式

    定時(shí)器是計(jì)算機(jī)或電子設(shè)備中常見(jiàn)的一個(gè)硬件或軟件組件,其主要功能是測(cè)量和控制時(shí)間的流逝。它在各種應(yīng)用起著至關(guān)重要的作用,如操作系統(tǒng)調(diào)度、多媒體播放、網(wǎng)絡(luò)通信、工業(yè)自動(dòng)化控制以及家電設(shè)備的定時(shí)功能等。
    的頭像 發(fā)表于 08-19 18:28 ?2594次閱讀

    定時(shí)器工作方式介紹

    定時(shí)器是計(jì)算機(jī)和嵌入式系統(tǒng)中常見(jiàn)的一種硬件模塊,用于實(shí)現(xiàn)定時(shí)計(jì)數(shù)功能。定時(shí)器工作方式通常由一組寄存
    的頭像 發(fā)表于 07-12 10:29 ?1812次閱讀

    定時(shí)器相關(guān)的寄存有哪些類(lèi)型

    在微控制編程,定時(shí)器是一種非常常見(jiàn)的功能模塊,用于實(shí)現(xiàn)各種定時(shí)計(jì)數(shù)功能。定時(shí)器
    的頭像 發(fā)表于 07-12 10:25 ?1605次閱讀

    ESP32定時(shí)器精度不準(zhǔn)的原因?

    ESP32定時(shí)器精度不準(zhǔn)?經(jīng)測(cè)試使用auto_loader模式,定時(shí)中斷每周期會(huì)比實(shí)際預(yù)定時(shí)間長(zhǎng) 125ns 左右。請(qǐng)問(wèn)是什么原因? 測(cè)試
    發(fā)表于 06-25 06:21

    長(zhǎng)持續(xù)時(shí)間定時(shí)器電路圖 時(shí)間定時(shí)器工作原理和功能

    時(shí)間定時(shí)器是一種用于計(jì)時(shí)和調(diào)度任務(wù)的工具。它允許我們?cè)谔囟ǖ臅r(shí)間間隔內(nèi)執(zhí)行某個(gè)任務(wù),或者在特定的時(shí)間點(diǎn)執(zhí)行某個(gè)操作。定時(shí)器在計(jì)算機(jī)系統(tǒng)的應(yīng)用非常廣泛,從操作系統(tǒng)的任務(wù)調(diào)度、網(wǎng)絡(luò)傳輸?shù)目刂频綄?shí)時(shí)系統(tǒng)
    的頭像 發(fā)表于 06-24 17:34 ?4296次閱讀
    長(zhǎng)持續(xù)時(shí)間<b class='flag-5'>定時(shí)器</b>電路圖 時(shí)間<b class='flag-5'>定時(shí)器</b>的<b class='flag-5'>工作</b>原理和功能

    定時(shí)器繼電器的工作原理和分類(lèi)

    在電氣控制和自動(dòng)化系統(tǒng),定時(shí)器繼電器是一種關(guān)鍵的電氣控制元件。它通過(guò)設(shè)定特定的時(shí)間間隔,來(lái)控制電路的通斷,實(shí)現(xiàn)設(shè)備的自動(dòng)化操作。本文將對(duì)定時(shí)器繼電器的定義、特點(diǎn)、工作原理、分類(lèi)、應(yīng)用
    的頭像 發(fā)表于 06-21 18:06 ?1669次閱讀

    電子發(fā)燒友

    中國(guó)電子工程師最喜歡的網(wǎng)站

    • 2931785位工程師會(huì)員交流學(xué)習(xí)
    • 獲取您個(gè)性化的科技前沿技術(shù)信息
    • 參加活動(dòng)獲取豐厚的禮品