在线观看www成人影院-在线观看www日本免费网站-在线观看www视频-在线观看操-欧美18在线-欧美1级

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

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

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

STM32G4系列芯片定時器的延時輸出問題

茶話MCU ? 來源:茶話MCU ? 2024-07-01 09:45 ? 次閱讀

有人使用STM32G4系列芯片內(nèi)部的多個定時器做PWM輸出,輸出頻率一樣,占空比也一樣,均為50%。可是,當(dāng)他中途調(diào)整各個定時器以相同的工作參數(shù),即改變ARR的值和CCR值后,會發(fā)現(xiàn)TIM2和TIM5兩個定時器要比其它定時器延時等待一段長達20s左右的時間后才恢復(fù)正常PWM輸出,覺得頗為奇怪。

該用戶將芯片系統(tǒng)時鐘配置成170MHz,并作為各個片內(nèi)定時器的時鐘源,不做分頻后作為各個計數(shù)器的計數(shù)時鐘。

7f18bc9c-36a1-11ef-a4c8-92fbcf53809c.png

起初各個定時器的參數(shù)配置如下圖左邊所示內(nèi)容,工作起來后,于某時刻將各個定時器的工作參數(shù)改成下圖右邊所示內(nèi)容。

7f24e206-36a1-11ef-a4c8-92fbcf53809c.png

參數(shù)的修改基本在同一時刻完成,可是修改完各定時器的參數(shù)后,除了TIM2/TIM5的通道外,其它都能及時地基于新參數(shù)產(chǎn)生PWM輸出,TIM2/TIM5的輸出通道竟然會持續(xù)20s左右的低電平后才重新產(chǎn)生基于新參數(shù)的PWM輸出,怪異得很!

我們這里針對他用到的8個定時器來整理一下。8個定時器中除了TIM2/TIM5是32位定時器外,其它都是16位定時器。時鐘源、時基參數(shù)、PWM輸出配置都一樣。另外,他還強調(diào)關(guān)閉了各定時器的ARR和CCR的預(yù)裝功能,就是說針對這兩個寄存器即改即生效。

現(xiàn)在看來,感覺問題跟定時器的位寬有關(guān)。在STM32G4系列芯片里,TIM3是16位TIMER,TIM2是32位TIMER。這里不妨就拿它兩個作為代表做下測試,模擬該用戶的使用場景,看看是否可以重現(xiàn)問題現(xiàn)象。剛開始,兩個定時器使用完全相同的參數(shù)配置。【見下圖】

7f44abb8-36a1-11ef-a4c8-92fbcf53809c.png

我在代碼里隨機地修改兩個定時器以相同的參數(shù),也依然保持跟用戶相同數(shù)據(jù)。測試發(fā)現(xiàn),很容易遇到修改參數(shù)后,TIM2要延時20多秒后才恢復(fù)PWM輸出的情形。如下圖所示:

7f57063c-36a1-11ef-a4c8-92fbcf53809c.png

結(jié)合上圖示波器輸出截圖,不難看出,針對TIM2/TIM3修改相同工作參數(shù)后,TIM2相對TIM3要延遲一段20多秒的低電平后才恢復(fù)PWM輸出。見紅色長橢圓形所圈出的地方。

其實,如果眼尖細心的人也許發(fā)現(xiàn)修改參數(shù)后,TIM3也保持了一段低電平時間后才做正常PWM輸出,感覺TIM3的PWM輸出也并非即該即生效,只是延時相比TIM2短了不少而已。見下圖黃色箭頭所指位置。

7f761ef0-36a1-11ef-a4c8-92fbcf53809c.png

為什么會這樣呢?

我們進一步理一下當(dāng)前定時器的配置情況。現(xiàn)在兩個TIMER除了計數(shù)器位寬不一樣外,其它的具體配置都是完全一樣的。時基參數(shù)一樣,向上計數(shù)模式,PWM1模式,極性選擇為高有效。做PWM輸出時OC端遵循當(dāng)CCR大于CNT時輸出高,否則輸出低電平。顯然,兩個定時器輸出通道的輸出規(guī)則也是一樣的。

7f91beda-36a1-11ef-a4c8-92fbcf53809c.png

那問題到底出在哪里呢?

有個問題我們可能忽略了,那就是我們修改定時器工作參數(shù)【這里就是時基參數(shù)和CCR值】的時間點。假設(shè)現(xiàn)有某定時器處于向上計數(shù)模式、自動重裝值被設(shè)定為ARR_1值后開始計數(shù)工作,然后在如下圖所示某時刻修改ARR值成ARR_2并立即生效。

7fa075ec-36a1-11ef-a4c8-92fbcf53809c.png

當(dāng)計數(shù)器計到CNT_x位置時成功修改了ARR的值變?yōu)锳RR_2,此時計數(shù)器繼續(xù)向上計到ARR2后發(fā)生溢出后,重裝0開始新的計數(shù)循環(huán)。 但是,如果新的且生效的ARR值A(chǔ)RR_2比當(dāng)前計數(shù)器值【CNT_x】還小會怎么樣呢?即像下面圖示的樣子:

7fc16fd6-36a1-11ef-a4c8-92fbcf53809c.png

此時新的ARR值是ARR_2,不再是ARR_1。可此時的計數(shù)器的值CNT_x比新的ARR_2還大,計數(shù)器又是向上計數(shù)模式。此時計數(shù)器如何計數(shù)呢?

計數(shù)器會依然按照現(xiàn)有計數(shù)方向計數(shù):

對于16位寬度的定時器,它會從CNT_x一直計到0xffff時發(fā)生溢出,再從0開始計數(shù),計到ARR_2后發(fā)生溢出重裝,這樣周期性地循環(huán)計數(shù)。顯然,如果定時器還做PWM輸出的話,從CNT_x到0xffff這段時間的輸出不是正常的,或者說不是預(yù)期的。

對于32位寬度的定時器,它會從CNT_x一直計到0xffffffff時才發(fā)生溢出,再從0開始計數(shù),計到ARR_2后發(fā)生溢出重裝,這樣周期性地循環(huán)計數(shù)。同樣,如果定時器還做PWM輸出的話,從CNT_x到0xffffffff這段時間的輸出也不是正常的,或者說不是預(yù)期的。

也就是說,如果針對工作中的定時器中途成功修改ARR,且修改情形符合上面提到的第二種情形時,就會出現(xiàn)一段并不屬于用戶控制或用戶期望的計數(shù)段。自然,這段時間內(nèi)的PWM輸出往往也不是用戶預(yù)期想要的。這段時間的長短取決于計數(shù)器的位寬和計數(shù)時鐘頻率。這個現(xiàn)象不論16位還是32位TIMER都有可能出現(xiàn),無非時間長短、現(xiàn)象是否明顯罷了。這也解釋了前面16位TIMER和32位TIMER在成功修改ARR后都可能出現(xiàn)一段不受控或說非預(yù)期的計數(shù)時間段。

好,拉回我們前面的模擬測試。在測試中發(fā)生TIM2長時間暫停PWM輸出后才恢復(fù)的情形時,我們可以借助調(diào)試工具,發(fā)現(xiàn)成功修改ARR值時的CNT值要比新的ARR值【11332】大,見下面代碼截圖【圖中數(shù)據(jù)是16機制】:

7ffc3a62-36a1-11ef-a4c8-92fbcf53809c.png

此時,不論TIM2還是TIM3都要繼續(xù)往上計數(shù)到各自計數(shù)寬度所對應(yīng)的默認計數(shù)最大值才基于新的ARR值做循環(huán)計數(shù)。在這段繼續(xù)往上計數(shù)的時間段內(nèi),因為新的CCR值也已經(jīng)生效且總是小于CNT的值,結(jié)合PWM1模式和高有效的極性選擇配置,這段時間自然持續(xù)保持低電平輸出。

80142a6e-36a1-11ef-a4c8-92fbcf53809c.png

前面也說了,是否會出現(xiàn)一段不受控或說非預(yù)期的較長計數(shù)段跟我們修改TIMER工作參數(shù)的時間點有關(guān)系。當(dāng)修改工作參數(shù)時間點符合前面分析的第一種情形,即新的ARR值大于當(dāng)前計數(shù)器值時,是不會出現(xiàn)那段不受控或說非預(yù)期的較長延時的。比如我在測試代碼中,調(diào)整修改時間點如下面情形時,就看不到TIM2需要長時間延時后才輸出PWM的情況。

8028813a-36a1-11ef-a4c8-92fbcf53809c.png

從上圖中不難看出,成功修改完新的ARR值后,當(dāng)前計數(shù)器的值比新的ARR值小。這時計數(shù)器只需按照原計數(shù)方向計到新的ARR值后溢出重裝,開始循環(huán)計數(shù)。此時也感覺不到PWM輸出的明顯異常,更看不到長時間無PWM輸出的情形。

上面的問題也分析得差不多了,如何避免問題的產(chǎn)生呢?

我們可以開啟ARR寄存器的預(yù)裝功能,這樣就可以避免可能出現(xiàn)一段漫長的非預(yù)期的計數(shù)段。如果不希望開啟ARR寄存器的預(yù)裝功能,而希望隨時修改ARR生效,我們可以在修改定時器的工作參數(shù)后,通過手動方式對TIMER進行復(fù)位,即對TIMER事件發(fā)生寄存器的UG位置1,這樣除了產(chǎn)生定時器更新事件外,計數(shù)器會根據(jù)計數(shù)模式重裝新的計數(shù)初值,若是向下計數(shù)模式,重裝ARR后開始向下計數(shù),其它模式則重裝0值后開始向上計數(shù)。當(dāng)然,也可以在修改定時器的工作參數(shù)后,直接對CNT賦予0值。

下面代碼截圖示意隨機修改ARR及CCR【此時關(guān)閉了二者的預(yù)裝功能】的情況,每次修改后都讓計數(shù)器從0開始計數(shù),就完全可以避免可能出現(xiàn)長時間無PWM輸出的情況。

80d5b6f2-36a1-11ef-a4c8-92fbcf53809c.png

上面的分析都是基于計數(shù)器采用向上計數(shù)模式而言的,如果換了計數(shù)模式,有些描述可能需相應(yīng)做調(diào)整,但基本意思是一樣的。

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

    關(guān)注

    459

    文章

    51880

    瀏覽量

    433071
  • PWM
    PWM
    +關(guān)注

    關(guān)注

    116

    文章

    5296

    瀏覽量

    217163
  • 計數(shù)器
    +關(guān)注

    關(guān)注

    32

    文章

    2281

    瀏覽量

    95796
  • 定時器
    +關(guān)注

    關(guān)注

    23

    文章

    3271

    瀏覽量

    116545

原文標(biāo)題:一段莫名的延時輸出問題

文章出處:【微信號:stmcu832,微信公眾號:茶話MCU】歡迎添加關(guān)注!文章轉(zhuǎn)載請注明出處。

收藏 人收藏

    評論

    相關(guān)推薦

    STM32G4的應(yīng)用

    STM32G4系列發(fā)布也有一段時間了,但是網(wǎng)上關(guān)于G4的開發(fā)板一直很少,所以一直想體驗一下G4的MCU,在我畫板的時候,我已經(jīng)體驗到了G4
    發(fā)表于 08-06 07:42

    STM32G4定時器TIM輸入捕獲頻率測量

    摘要本文章基于國信長天M4開發(fā)板,講述了STM32G4 定時器TIM輸入捕獲頻率測量的因通過用,祝各位學(xué)生藍橋杯比賽取得好成績!M4開發(fā)板 頻率發(fā)生
    發(fā)表于 08-16 06:35

    請問一下STM32G4定時器TIM輸入捕獲頻率測量的應(yīng)用?

    請問一下STM32G4定時器TIM輸入捕獲頻率測量的應(yīng)用?
    發(fā)表于 11-18 07:01

    stm32G4 H7系列的HRTIM高分辨率定時器可以做捕獲輸入嗎?

    stm32G4,H7系列的HRTIM高分辨率定時器可以做捕獲輸入嗎,如果可以輸入引腳在哪。想測量外部脈沖頻率600-800KHz,誤差盡量小(±10Hz) 有什么方案給推薦一下。謝謝!!
    發(fā)表于 08-05 06:41

    基于STM32定時器實現(xiàn)毫秒延時函數(shù)

    STM32定時器包含基本定時器、通用定時器和高級定時器,其中TIM6和TIM7是STM32當(dāng)中的
    發(fā)表于 10-12 15:54 ?2.6w次閱讀
    基于<b class='flag-5'>STM32</b><b class='flag-5'>定時器</b>實現(xiàn)毫秒<b class='flag-5'>延時</b>函數(shù)

    利用STM32F4系列基本定時器延時程序

    STM32F4系列基本定時器TIM6 TIM7前言必須了解定時器時鐘頻率影子寄存代碼設(shè)計參考前言在一些需要的情況下軟件
    發(fā)表于 11-24 19:21 ?35次下載
    利用<b class='flag-5'>STM32F4</b><b class='flag-5'>系列</b>基本<b class='flag-5'>定時器</b>寫<b class='flag-5'>延時</b>程序

    基于STM32G4芯片的DAC應(yīng)用示例分享

    。這里要演示的基本功能就是讓DAM將內(nèi)存數(shù)據(jù)周期性傳輸給DAC數(shù)據(jù)寄存,最后輸出一路正弦波。 結(jié)合STM32G4芯片的特性,這里可以有兩種實現(xiàn)方式。 第一種,DMA的請求來自于DAC
    的頭像 發(fā)表于 11-26 11:39 ?5152次閱讀
    基于<b class='flag-5'>STM32G4</b><b class='flag-5'>芯片</b>的DAC應(yīng)用示例分享

    STM32F4: Systick滴答定時器-延時函數(shù)講解(五)

    CM3,CM4內(nèi)核芯片,都有Systick定時器。Systick定時器常用來做延時,或者實時系統(tǒng)的心跳時鐘。這樣可以節(jié)省MCU資源,不用浪費
    發(fā)表于 12-01 15:21 ?15次下載
    <b class='flag-5'>STM32F4</b>: Systick滴答<b class='flag-5'>定時器</b>-<b class='flag-5'>延時</b>函數(shù)講解(五)

    STM32定時器US延時

    定時器”介紹的SysTick定時器,該定時器位于Cortex-M3內(nèi)核中。外設(shè)定時器芯片半導(dǎo)體廠商設(shè)計,如
    發(fā)表于 12-05 15:36 ?25次下載
    <b class='flag-5'>STM32</b><b class='flag-5'>定時器</b>US<b class='flag-5'>延時</b>

    STM32】SysTick滴答定時器(delay延時函數(shù)講解)

    Systick定時器,是一個簡單的定時器,對于CM3、CM4內(nèi)核芯片,都有Systick定時器。Systick
    發(fā)表于 02-10 10:35 ?13次下載
    【<b class='flag-5'>STM32</b>】SysTick滴答<b class='flag-5'>定時器</b>(delay<b class='flag-5'>延時</b>函數(shù)講解)

    STM32G4 系列壽命估算

    STM32G4 系列壽命估算
    發(fā)表于 11-21 08:11 ?2次下載
    <b class='flag-5'>STM32G4</b> <b class='flag-5'>系列</b>壽命估算

    AN5306_OPAMP在STM32G4系列中的應(yīng)用

    AN5306_OPAMP在STM32G4系列中的應(yīng)用
    發(fā)表于 11-21 08:11 ?4次下載
    AN5306_OPAMP在<b class='flag-5'>STM32G4</b><b class='flag-5'>系列</b>中的應(yīng)用

    AN5310_使用STM32F3系列STM32G4系列設(shè)備的模擬特性指南

    AN5310_使用STM32F3系列STM32G4系列設(shè)備的模擬特性指南
    發(fā)表于 11-21 17:06 ?2次下載
    AN5310_使用<b class='flag-5'>STM32</b>F3<b class='flag-5'>系列</b>與<b class='flag-5'>STM32G4</b><b class='flag-5'>系列</b>設(shè)備的模擬特性指南

    STM32G4系列安全手冊

    STM32G4系列安全手冊
    發(fā)表于 11-22 08:21 ?3次下載
    <b class='flag-5'>STM32G4</b><b class='flag-5'>系列</b>安全手冊

    STM32如何使用定時器實現(xiàn)微秒(us)級延時

    STM32如何使用定時器實現(xiàn)微秒(us)級延時? 在STM32微控制中,可以使用定時器實現(xiàn)微秒
    的頭像 發(fā)表于 11-06 11:05 ?7075次閱讀
    主站蜘蛛池模板: 久操视频免费看 | 国产人成午夜免视频网站 | 一级aaaaa毛片免费视频 | 伊人久久大香线蕉电影院 | 欧美性猛交xxx嘿人猛交 | 性生活一区| 精品国产成人系列 | 日本三级香港三级人妇99 | 欧美影院一区二区 | 色视频网站人成免费 | 男人在线视频 | 五月婷婷丁香在线视频 | 中国一级特黄真人毛片免费看 | 一级特黄aaa大片在线观看视频 | 色噜噜狠狠狠综合曰曰曰 | 人人做天天爱夜夜爽中字 | 精品久久久久久 | 老色视频 | 日本一区免费观看 | 一级特黄性色生活片一区二区 | 欧美一级精品高清在线观看 | 人人做人人爽 | 午夜理伦片免费 | 五月天久久婷婷 | 亚洲理论在线 | 天堂在线影院 | 亚洲天天操| 海棠高h粗暴调教双性男男 韩国韩宝贝2020vip福利视频 | 五等分的新娘免费漫画 | 777黄色片 | 丁香婷婷综合网 | 一级特黄a免费大片 | 久久综合九色综合98一99久久99久 | 国产在视频线精品视频2021 | 性欧美黑人巨大videos | 男人午夜视频 | 日本免费高清 | 亚洲精品美女视频 | 91极品反差婊在线观看 | 加勒比在线一区 | 色爱区综合五月激情 |