国产 无码 综合区,色欲AV无码国产永久播放,无码天堂亚洲国产AV,国产日韩欧美女同一区二区

STM32使用CubeMx配置定時器輸出PWM

這篇具有很好參考價值的文章主要介紹了STM32使用CubeMx配置定時器輸出PWM。希望對大家有所幫助。如果存在錯誤或未考慮完全的地方,請大家不吝賜教,您也可以點擊"舉報違法"按鈕提交疑問。

1 概述

????????項目中經(jīng)常使用到STM32來輸出PWM,每次配置過后過不了多久就會忘記,稍微需要對配置做出修改時都要翻很久的手冊,所以決定結(jié)合實例把PWM配置的詳細步驟記錄下來,這樣在下次配置時可以很快的撿起來。

????????本文檔的行文結(jié)構(gòu)如下,首先,說明實際需求,即要輸出什么樣的PWM信號;然后,根據(jù)需求把手冊中相關(guān)的部分摘抄下來并輔以個人的理解和總結(jié);最后,詳細說明在軟件中怎么去配置并展示配置后的實驗效果。

2 需求

????????項目中用到4路PWM信號,硬件條件決定了其只能由定時器1和定時器3產(chǎn)生,每個定時器輸出兩路PWM信號,要求4個PWM信號相位同步,每個PWM信號如圖1所示。

cubemx設(shè)置pwm輸出,stm32

圖1 PWM輸出波形要求

????????具體要求見表1。

? ? ? ? 表1 PWM要求

序號 名稱 要求 備注

1

周期

100us

暫定

2

占空比

0~100%可調(diào)

3

中斷觸發(fā)時刻

計數(shù)器下溢點

4

占空比更新時刻

計數(shù)器下溢點

3 STM高級定時器原理

cubemx設(shè)置pwm輸出,stm32

圖 2高級定時器的原理框圖

????????圖中用紅色虛線框出來的部分是輸出PWM所需要的部分,包括時鐘源、計數(shù)器單元、比較寄存器及PWM輸出、TRGO輸出、外部觸發(fā)輸入,下面依次說明各部分原理。

3.1 時鐘源

計數(shù)器時鐘可由以下時鐘源提供:

  • 內(nèi)部時鐘(CK_INT)
  • 外部時鐘模式1:外部輸入引腳
  • 外部時鐘模式2:外部觸發(fā)輸入ETR
  • 外部觸發(fā)輸入(ITRx)

輸出PWM使用內(nèi)部時鐘(CK_INT),只需要關(guān)心怎么配置為內(nèi)部時鐘以及內(nèi)部時鐘的頻率。

?3.2 計數(shù)器單元

????????時鐘源輸出的時鐘經(jīng)過預(yù)分頻器分頻后作為計數(shù)器的時鐘。計數(shù)器在時鐘下可以增計數(shù)、減計數(shù)、增/減計數(shù)。自動重載寄存器控制計數(shù)器的計數(shù)范圍,即定時器的周期。重復(fù)計數(shù)器控制更新事件UEV產(chǎn)生的頻率。

3.2.1 預(yù)分頻器

????????預(yù)分頻器用于對計數(shù)器時鐘進行分頻,分頻系數(shù)可配置為1~65536。分頻系數(shù)可以動態(tài)修改,不過其具有緩沖功能,修改后的分頻系數(shù)只能在下一次更新事件UEV后生效(見3.2.3節(jié))

3.2.2 計數(shù)器

1)計數(shù)器可以增計數(shù)、減計數(shù)、增\減計數(shù)。

  • 增計數(shù)的范圍為0~自動重裝值(TIMx_ARR寄存器的值),計數(shù)值為自動重裝值時產(chǎn)生上溢事件,定時器周期=T_CK_CNT*(自動重裝值+1);
  • 減計數(shù)的范圍為自動重裝值(TIMx_ARR寄存器的值)~0,計數(shù)值為0時產(chǎn)生下溢事件,定時器周期=T_CK_CNT*(自動重裝值+1)
  • 增\減計數(shù)的范圍為0~自動重裝值(TIMx_ARR寄存器的值)~1,計數(shù)值為自動重裝值-1時生成上溢事件,計數(shù)值為1時生成下溢事件。計數(shù)器周期=T_CK_CNT*自動重裝值*2

2)自動重裝值可以配置為預(yù)裝載或者不預(yù)裝載。不預(yù)裝載時,自動重裝值實時生效;預(yù)裝載時,自動重裝值在下一次更新事件UEV后生效(見3.2.3節(jié))。

3)增/減計數(shù)有3種,分別為中心對稱模式1/2/3,區(qū)別在于輸出比較中斷標志觸發(fā)的位置不同,具體見手冊。

3.2.3 重復(fù)計數(shù)器及更新事件(UEV)的產(chǎn)生

1.重復(fù)計數(shù)器

????????重復(fù)計數(shù)器僅用來控制更新事件的產(chǎn)生。它是一個自動重裝的減計數(shù)器,更新事件UEV時自動重裝,重裝值為RCR寄存器的值。每次上溢或下溢事件時重復(fù)計數(shù)器減1。

2.更新事件的產(chǎn)生

?????????更新事件(UEV)可以被屏蔽或者啟用(TIM_CR1的UDIS位)。被屏蔽的情況下不會產(chǎn)生任何更新事件;被啟用的情況下,有兩種情況可以產(chǎn)生更新事件,分別為外部觸發(fā)和計數(shù)器內(nèi)部觸發(fā)。

????????外部觸發(fā)不受重復(fù)計數(shù)器的影響,只要觸發(fā)則立即產(chǎn)生更新事件。外部觸發(fā)有兩種,分別為軟件向TIM_EGR的UG位寫1和外部觸發(fā)輸入(見3.5節(jié))。

????????計數(shù)器內(nèi)部觸發(fā)受重復(fù)計數(shù)器的影響,只有重復(fù)計數(shù)器等于0時才可以產(chǎn)生更新事件。在重復(fù)計數(shù)器等于0時以下三種情況可以產(chǎn)生更新事件:

  • 增計數(shù)時上溢事件時產(chǎn)生更新事件;
  • 減計數(shù)時下溢事件時產(chǎn)生更新事件;
  • 增\減計數(shù)時上溢和下溢均產(chǎn)生更新事件;

????????結(jié)合重復(fù)寄存器的原理可知,每N(RCR寄存器的值)+1次上溢或者N+1

次下溢事件產(chǎn)生1次更新事件?。

3.增\減計數(shù)模式下如何控制更新事件(UEV)在上溢還是下溢產(chǎn)生?

????????顯然,增\減計數(shù)模式時如果配置重復(fù)寄存器RCR為奇數(shù),更新事件將只能在上溢或下溢產(chǎn)生,那么該如何控制其在上溢還是在下溢產(chǎn)生呢?手冊中寫到:在啟動計數(shù)器前寫入RCR,則UEV將在上溢時產(chǎn)生,在計數(shù)器啟動后寫入RCR,則UEV將在下溢時產(chǎn)生。

但經(jīng)過實測試上述說法并不完全準確。實測結(jié)果如下:

  • 在啟動計數(shù)器前對RCR寫入1,UEV在上溢產(chǎn)生;
  • 在啟動計數(shù)器前先對RCR寫入1,再軟件強制觸發(fā)一個UEV,然后啟動計數(shù)器,UEV將在下溢產(chǎn)生。(HAL庫中有此操作,所以在CubeMx直接配置重復(fù)計數(shù)器為1,UEV仍在下溢產(chǎn)生);
  • 啟動計數(shù)器后,在增計數(shù)過程中對RCR寫入1,UEV在上溢產(chǎn)生;
  • 啟動計數(shù)器后,在減計數(shù)過程中對RCR寫入1,UEV在下溢產(chǎn)生。

????????可以這么理解,啟動計數(shù)器后首先觸發(fā)的是上溢事件,然后是下溢事件。因為重復(fù)計數(shù)器是一個在更新事件UEV時自動重裝載的計數(shù)器,在啟動計數(shù)器前寫入的1并沒有裝載到重復(fù)計數(shù)器,所以啟動計數(shù)器后更新事件UEV在上溢產(chǎn)生;如果在啟動計數(shù)器前軟件強制觸發(fā)一個UEV事件,則在啟動計數(shù)器時1已經(jīng)寫入重復(fù)計數(shù)器,所以更新事件UEV在下溢產(chǎn)生。

????????至于啟動計數(shù)器后寫入RCR的現(xiàn)象則更好解釋。因重復(fù)計數(shù)器只在UEV時更新,寫入RCR后不會立馬更新,所以增計數(shù)在上溢產(chǎn)生UEV事件然后更新重復(fù)計數(shù)器,減計數(shù)在下溢產(chǎn)生UEV事件然后更新重復(fù)計數(shù)器。

cubemx設(shè)置pwm輸出,stm32

圖 3不同模式和配置下的更新事件(UEV)的觸發(fā)時刻

3.2.3 比較寄存器及PWM輸出

????????比較寄存器(TIM_CCRx)可以配置為預(yù)裝載和不預(yù)裝載。預(yù)裝載時,只有在下一次更新事件UEV時比較寄存器的值才會生效,不預(yù)裝載時,比較寄存器的值實時生效。配置為PWM模式時必須使能預(yù)裝載(使用HAL庫配置為PWM模式時默認已使能預(yù)裝載)

????????比較寄存器可以配置為PWM模式和其他模式。這里僅介紹PWM模式,其他模式見手冊比較輸出模式章節(jié)。PWM模式分為PWM模式1和PWM模式2。

PWM模式1時:

  • 計數(shù)器增計數(shù)時,計數(shù)器<TIM_CCRx則OCxREF輸出高電平,否則輸出低電平;
  • 計數(shù)器減計數(shù)時,計數(shù)器TIM_CCRx則OCxREF輸出高電平,否則輸出低電平。

cubemx設(shè)置pwm輸出,stm32

圖 4 PWM模式1、中心對齊模式的PWM波形

PWM模式2時:

  • 計數(shù)器增計數(shù)時,計數(shù)器>TIM_CCRx則OCxREF輸出高電平,否則輸出低電平;
  • 計數(shù)器減計數(shù)時,計數(shù)器≧TIM_CCRx則OCxREF輸出高電平,否則輸出低電平。

????????注意事項:不建議在運行中心對齊模式(增\減計數(shù))時對計數(shù)器執(zhí)行寫操作,使用中心對稱模式最為保險的方法為:在啟動計數(shù)器前通過軟件生成更新(對TIM_EGR的UG位寫1)來初始化所有寄存器(HAL庫中有此操作),并且不要在計數(shù)器運行過程中對其執(zhí)行寫操作

3.4 外部觸發(fā)輸出(TRGO)

????????TRGO輸出受TIM_CR2寄存器MMS位控制,具體如圖5。

cubemx設(shè)置pwm輸出,stm32

?圖 5?TRGO輸出配置

????????MMS為010時,更新事件UEV作為TRGO輸出,可用于同步其他定時器。

3.5?外部觸發(fā)輸入

????????定時器配置為從模式可與外部觸發(fā)輸入同步,有三種同步模式,分別為復(fù)位模式、門控模式和觸發(fā)模式,這里僅介紹復(fù)位模式,其他模式見手冊。復(fù)位模式:觸發(fā)事件時,計數(shù)器和預(yù)分頻器將重新初始化,同時還會生成更新事件UEV,所有的預(yù)裝載寄存器將會更新。觸發(fā)輸入可選:

  • ITR0:內(nèi)部觸發(fā)0
  • ITR1:內(nèi)部觸發(fā)1
  • ITR2:內(nèi)部觸發(fā)2
  • ITR3:內(nèi)部觸發(fā)3
  • T1F_ED:TI1的邊沿檢測器
  • TI1FP1:濾波后的定時器輸入1
  • TI1FP2:濾波后的定時器輸入2
  • ETRF:外部觸發(fā)輸入

????????其中ITR0~ITR3是從定時器的內(nèi)部觸發(fā)輸入,是主定時器的TRGO輸出。當定時器3作為從定時器時,它對應(yīng)的內(nèi)部觸發(fā)輸入來源如下:

表 2?定時器3作為從定時器時的觸發(fā)輸入來源

從定時器

ITR0

ITR1

ITR2

ITR3

TIM2

TIM1

TIM15

TIM3

TIM14

4 軟件配置

????????硬件條件決定了只能使用定時器1和定時器3各輸出兩路PWM信號。為實現(xiàn)同步,配置定時器3為從模式,使用定時器1的觸發(fā)輸出(TRGO)進行同步復(fù)位。

4.1 CubeMx中的配置

4.1.1 定時器1的配置

cubemx設(shè)置pwm輸出,stm32

?圖 6?CubeMx中定時器1的配置1

cubemx設(shè)置pwm輸出,stm32

?圖 7?CubeMx中定時器1的配置2

4.1.2 定時器3的配置?

cubemx設(shè)置pwm輸出,stm32

圖 8?CubeMx中定時器2的配置

4.2 程序中的配置

?cubemx設(shè)置pwm輸出,stm32

?圖 9?程序中的配置1

cubemx設(shè)置pwm輸出,stm32

?圖 10?程序中的配置2

5 實驗效果

????????實驗結(jié)果如圖10和圖11所示,定時器1和定時器3的PWM輸出同步,周期為10kHz,占空比為25%;定時器1的更新事件在下溢點觸發(fā),每個增\減計數(shù)周期觸發(fā)1次。

cubemx設(shè)置pwm輸出,stm32

圖 11?實驗效果1-PWM信號周期、占空比、同步關(guān)系

cubemx設(shè)置pwm輸出,stm32

?圖 12?定時器1更新事件UEV觸發(fā)時刻

?文章來源地址http://www.zghlxwxcb.cn/news/detail-775501.html

到了這里,關(guān)于STM32使用CubeMx配置定時器輸出PWM的文章就介紹完了。如果您還想了解更多內(nèi)容,請在右上角搜索TOY模板網(wǎng)以前的文章或繼續(xù)瀏覽下面的相關(guān)文章,希望大家以后多多支持TOY模板網(wǎng)!

本文來自互聯(lián)網(wǎng)用戶投稿,該文觀點僅代表作者本人,不代表本站立場。本站僅提供信息存儲空間服務(wù),不擁有所有權(quán),不承擔相關(guān)法律責任。如若轉(zhuǎn)載,請注明出處: 如若內(nèi)容造成侵權(quán)/違法違規(guī)/事實不符,請點擊違法舉報進行投訴反饋,一經(jīng)查實,立即刪除!

領(lǐng)支付寶紅包贊助服務(wù)器費用

相關(guān)文章

  • STM32CubeMX——定時器配置

    STM32CubeMX——定時器配置

    本文將會以STM32F103C8T6為例配置定時器2定時5 ms SMT32F1系列共有8個定時器: 基本定時器(TIM6、TIM7) 通用定時器(TIM2、TIM3、TIM4、TIM5) 高級定時器(TIM1、TIM8) 16位向上、向下、向上/下自動裝載計數(shù)器 16位可編程(可以實時修改)預(yù)分頻器,計數(shù)器時鐘頻率的分頻系數(shù)為 1~6553

    2023年04月10日
    瀏覽(22)
  • STM32 HAL庫 通用定時器介紹及相關(guān)應(yīng)用例程 定時器中斷 輸出PWM (點亮LED呼吸燈、輸出PWM、輸入捕獲) CubeMX

    STM32 HAL庫 通用定時器介紹及相關(guān)應(yīng)用例程 定時器中斷 輸出PWM (點亮LED呼吸燈、輸出PWM、輸入捕獲) CubeMX

    (部分圖引自于ATK) 前情提要(基本定時器) 點此進入 通用定時器類別 通用定時器和基本定時器相比大致的工作方式是相似的,不過通用定時器比基本定時器多了一些很好用的功能,比如: 外部輸入捕獲 輸出比較 輸出PWM 時鐘源 CubeMX為我們提供了配置時鐘的非常方便的工

    2024年04月15日
    瀏覽(39)
  • STM32CubeMX學習四 之定時器配置

    STM32CubeMX學習四 之定時器配置

    記錄一下STM32CubeMX的學習筆記,同時分享給初學的小白,希望一起進步。 如何使用STM32CubeMX以及工程創(chuàng)建在之前的博客有提到,這里就直接從定時器講起。 編譯環(huán)境:KEIL 代碼生成:STM32CubeMX 庫:HAL MCU:STM32F072 假設(shè)你的cubeMX工程已經(jīng)建好,這里我們開始配置定時器2(TIM2),

    2024年02月01日
    瀏覽(16)
  • STM32開發(fā)(10)----CubeMX配置基本定時器

    STM32開發(fā)(10)----CubeMX配置基本定時器

    本章介紹使用STM32CubeMX對基本定時器進行配置的方法,STM32F103高性能系列設(shè)備包括基本定時器、高級控制定時器、通用定時器、看門狗定時器和 SysTick 定時器,但是STM32F103C6t6上資源比較有限(高級定時器TIM1,通用定時器TIM2和TIM3),沒有真正的基本定時器,其實通用定時器和

    2024年02月16日
    瀏覽(22)
  • 搭建stm32電機控制代碼框架(二)——Stm32CubeMx配置定時器

    搭建stm32電機控制代碼框架(二)——Stm32CubeMx配置定時器

    搭建了基礎(chǔ)的環(huán)境,配置了一個簡單的工程后,CubeMx的基本操作就會了。然后基于這個操作往下推進,開始對關(guān)鍵模塊定時器的攻略,這個部分需要先熟悉一下Stm32的定時器基本原理。 《STM32參考手冊》中僅對定時器的介紹就已經(jīng)占了100多頁,這里就不一一展開,挑一些關(guān)鍵

    2024年02月06日
    瀏覽(21)
  • 野火STM32電機系列(五)Cubemx配置高級定時器TIM1

    野火STM32電機系列(五)Cubemx配置高級定時器TIM1

    鴿了一段時間,放心不會斷的哈,目前僅僅是顯示屏壞了,不影響后面項目 前文已經(jīng)配置了GPIO、編碼器 本節(jié)講解CubeMX高級定時器TIM1配置帶死區(qū)的6路互補的PWM 同時配置信號觸發(fā)后續(xù)ADC采集 板子引角的原理圖如下 對應(yīng)的: Motor1--U+--PA8--TIM1_CH1 Motor1--U---PB13--TIM1_CH1N Motor1--V+--

    2024年02月15日
    瀏覽(27)
  • 【STM32】定時器1觸發(fā)ADC多(規(guī)則)通道采樣+DMA(CUBEMX配置)

    【STM32】定時器1觸發(fā)ADC多(規(guī)則)通道采樣+DMA(CUBEMX配置)

    在用單片機做電源控制時不得不提ADC采集,離散系統(tǒng)是有固定的執(zhí)行周期的,所以我們采樣也是要固定時間去采樣。然后就是我希望pwm波(定時器1產(chǎn)出)的頻率與采樣頻率一致。 我下面演示的是G431CBU6,當然其他芯片也大差不差了。 說一下大致流程,TIM1觸發(fā)ADC采樣,然后

    2024年02月01日
    瀏覽(36)
  • STM32CUBEMX配置 定時器中斷 和 上升沿中斷(實現(xiàn)檢測1s以內(nèi)的脈沖個數(shù))

    STM32CUBEMX配置 定時器中斷 和 上升沿中斷(實現(xiàn)檢測1s以內(nèi)的脈沖個數(shù))

    ———————————————————————————————————— ? 大家好哇!我是小光,嵌入式愛好者,一個想要成為系統(tǒng)架構(gòu)師的大三學生。 ?最近在開發(fā)一個STM32H723ZGT6的板子,使用STM32CUBEMX做了很多驅(qū)動,包括ADC、UART、RS485、EEPROM(IIC)、FLASH(SPI)等等。

    2024年02月16日
    瀏覽(17)
  • STM32CubeMX | 使用STM32定時器的PWM輸入模式測量脈沖寬度和周期

    STM32CubeMX | 使用STM32定時器的PWM輸入模式測量脈沖寬度和周期

    本篇博客以STM32F103C8為例,其他系列MCU可能稍有不同,但原理一樣。 相關(guān)鏈接博文: STM32CubeMX | STM32使用HAL庫實現(xiàn)定時器PWM輸出 STM32CubeMX | STM32使用HAL庫進行脈沖寬度和周期測量 1、介紹 以前寫過一篇博文,介紹的是如何使用定時器的輸入捕獲功能測量脈沖的寬度以及周期,適

    2024年02月13日
    瀏覽(16)
  • 初出茅廬的小李博客之STM32CubeMx配置定時器的編碼器模式

    初出茅廬的小李博客之STM32CubeMx配置定時器的編碼器模式

    上次文章寫了編碼器是如何工作的,今天就來用STM32F103C8T6的TIM3的通道1跟通道2編寫一個編碼器識別程序。 話不多說,上教程! 選擇外部高速時鐘源HSE 選擇中斷模式觸發(fā)下降沿有效 默認是上拉輸入 添加用戶標簽為SWITCH 使能NVIC配置 選擇編碼器模式 分頻值設(shè)置為2-1 計數(shù)值設(shè)

    2024年02月12日
    瀏覽(26)

覺得文章有用就打賞一下文章作者

支付寶掃一掃打賞

博客贊助

微信掃一掃打賞

請作者喝杯咖啡吧~博客贊助

支付寶掃一掃領(lǐng)取紅包,優(yōu)惠每天領(lǐng)

二維碼1

領(lǐng)取紅包

二維碼2

領(lǐng)紅包