chinese直男口爆体育生外卖, 99久久er热在这里只有精品99, 又色又爽又黄18禁美女裸身无遮挡, gogogo高清免费观看日本电视,私密按摩师高清版在线,人妻视频毛茸茸,91论坛 兴趣闲谈,欧美 亚洲 精品 8区,国产精品久久久久精品免费

0
  • 聊天消息
  • 系統(tǒng)消息
  • 評論與回復
登錄后你可以
  • 下載海量資料
  • 學習在線課程
  • 觀看技術視頻
  • 寫文章/發(fā)帖/加入社區(qū)
會員中心
創(chuàng)作中心

完善資料讓更多小伙伴認識你,還能領取20積分哦,立即完善>

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

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

STM32單片機 ? 來源:未知 ? 2023-08-09 17:45 ? 次閱讀
加入交流群
微信小助手二維碼

掃碼添加小助手

加入工程師交流群

關鍵字:高精度定時器,Single-shot 計數(shù)模式

目錄預覽

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

1. 問題提出

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

2.問題描述

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

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

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

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

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

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

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

圖2.“問題”工作工程中的寄存器更新配置

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

查看該配置對應的寄存器說明:

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

當配置“Update taken into account on the following Reset/Roll-over event”對應于該位置“1”,即更新事件,無論是來自相鄰定時器的還是軟件產(chǎn)生的,都需要等到下一個Reset/Roll-over event才生效。

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

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

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

圖3.“問題”工程中的寄存器更新與定時器Reset配置

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

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

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

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

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

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

3. 解決方法

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

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

4.小結(jié)

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

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

長按掃碼關注公眾號

更多資訊,盡在STM32

點擊“閱讀原文”,可下載原文檔


原文標題:應用筆記 | 高精度定時器中single-shot計數(shù)模式不工作

文章出處:【微信公眾號:STM32單片機】歡迎添加關注!文章轉(zhuǎn)載請注明出處。

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

    關注

    6074

    文章

    45453

    瀏覽量

    667057
  • STM32
    +關注

    關注

    2307

    文章

    11150

    瀏覽量

    372403

原文標題:應用筆記 | 高精度定時器中single-shot計數(shù)模式不工作

文章出處:【微信號:STM32_STM8_MCU,微信公眾號:STM32單片機】歡迎添加關注!文章轉(zhuǎn)載請注明出處。

收藏 人收藏
加入交流群
微信小助手二維碼

掃碼添加小助手

加入工程師交流群

    評論

    相關推薦
    熱點推薦

    CW32定時器及其中斷介紹

    計數(shù)器并由一個可編程預分頻驅(qū)動。BTIM 支持定時器模式、計數(shù)器模式、觸發(fā)啟動
    發(fā)表于 01-14 06:42

    LAT1173高精度定時器的同步功能應用筆記

    STM32G474 所含的高精度定時器(HRTIMER)其實包含了多個定時器,多個定時器之間可以單獨工作,也可以進行同步,且
    發(fā)表于 01-11 17:32 ?0次下載

    LAT1183+高精度定時器 single-shot 計數(shù)模式工作用筆記

    客戶使用 STM32G474 的高精度定時器,基于 CubeMX 進行外設配置與代碼生成,將某個子定時器計數(shù)方式設置為 retriggerable
    發(fā)表于 01-11 17:28 ?0次下載

    CW32L083的基本定時器

    CW32L083 內(nèi)部集成 3 個基本定時器 (BTIM),每個 BTIM 完全獨立且功能完全相同,各包含一個 16bit 自動重裝 載計數(shù)器并由一個可編程預分頻驅(qū)動。BTIM 支持定時器
    發(fā)表于 12-15 06:23

    什么是自動喚醒定時器

    CW32F030 內(nèi)部集成 1 個自動喚醒定時器 (AWT),AWT 包含一個 16bit 向下計數(shù)器,并由一個可編程預分頻驅(qū)動。AWT 可選 5 種計數(shù)時鐘源,可
    發(fā)表于 12-11 07:24

    CW32通用定時器—輸出比較

    的選擇,定時器會有不同的工作模式,如外部計數(shù)模式、編碼模式等。這里選擇
    發(fā)表于 12-11 06:45

    CW32A030微控制定時器

    16bit 自動重裝載計數(shù) 并由一個可編程預分頻驅(qū)動。GTIM 支持定時器模式計數(shù)器
    發(fā)表于 12-04 06:47

    CW32L010+定時器介紹

    :用于對時鐘信號進行分頻,以降低計數(shù)器計數(shù)頻率。通過預分頻,可以實現(xiàn)更長的定時周期和更細粒度的定時控制。 控制寄存
    發(fā)表于 12-01 07:53

    CW32L0開發(fā)板學習記錄四,高級定時器ATIM學習

    (ATIM): 高級定時器 (ATIM) 包含一個 16bit 自動重載計數(shù)器,并由一個可編程的預分頻驅(qū)動。ATIM 支持定時、計數(shù)、復位
    發(fā)表于 12-01 07:35

    CW32定時器及中斷介紹

    = BTIM_Mode_TIMER;/* 工作模式,00:定時器模式01:計數(shù)器模式10:觸發(fā)
    發(fā)表于 12-01 07:08

    單片機定時器中斷

    分頻后送來;另一個是T0或T1引腳輸入的外部脈沖源。如果定時器/計數(shù)器工作定時模式,則表示時間已到;如果
    發(fā)表于 11-24 06:22

    PWM、定時器、SysTick 區(qū)別及應用場景

    在單片機和嵌入式開發(fā),經(jīng)常會遇到PWM(脈寬調(diào)制)、定時器、SysTick(系統(tǒng)滴答定時器)這幾個詞。很多初學者容易把它們混為一談,以為都是“定時相關的東西”。其實,它們在本質(zhì)和應用
    的頭像 發(fā)表于 11-17 10:53 ?418次閱讀
    PWM、<b class='flag-5'>定時器</b>、SysTick 區(qū)別及應用場景

    SysTick系統(tǒng)滴答定時器簡介

    SysTick—系統(tǒng)定時器是屬于CM33內(nèi)核的一個外設,內(nèi)嵌在NVIC。系統(tǒng)定時器是一個24bit的向下遞減的計數(shù)器
    的頭像 發(fā)表于 09-23 09:50 ?1490次閱讀
    SysTick系統(tǒng)滴答<b class='flag-5'>定時器</b>簡介

    MCU定時器/計數(shù)器

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

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

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