一区二区三区三上|欧美在线视频五区|国产午夜无码在线观看视频|亚洲国产裸体网站|无码成年人影视|亚洲AV亚洲AV|成人开心激情五月|欧美性爱内射视频|超碰人人干人人上|一区二区无码三区亚洲人区久久精品

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

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

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

一個定時器輸出4路不同頻率波形的應(yīng)用示例

冬至子 ? 來源:茶話MCU ? 作者:MilerShao ? 2023-07-06 15:57 ? 次閱讀
加入交流群
微信小助手二維碼

掃碼添加小助手

加入工程師交流群

一般來講,一個STM32定時器輸出基于同一頻率的各路信號比較方便。但經(jīng)常也會有人問使用STM32一個定時器是否可以實現(xiàn)多路不同頻率的輸出。從實現(xiàn)這個功能角度來講,答案是肯定的,并可以滿足相應(yīng)的應(yīng)用需求。

這里利用STM32G4的Nucleo開發(fā)板進行一個簡單的實現(xiàn)示例,順便交流和分享些思路,以拓寬STM32定時器的應(yīng)用場景。示例中使用STM32定時器輸出模式中的比較切換模式,即Toggle模式,結(jié)合定時器的比較事件及DMA傳輸來完成。

我使用STM32G431RB片內(nèi)TIM1,通過它實現(xiàn)4路不同頻率的PWM輸出,分別是20KHz,50KHz,70KHz,80KHz,讓TIM1運行在10Khz的循環(huán)計數(shù)狀態(tài)。TIMER的計數(shù)時鐘源為170Mhz,沒有對時鐘進行分頻。

基于上述條件,TIM1的10KHz更新頻率所對應(yīng)的計數(shù)脈沖個數(shù)則為17000,那么,20KHz、50KHz、70KHz、80KHz所對應(yīng)的計數(shù)脈沖個數(shù)分別是8500、3400、2428、2125,分別對應(yīng)著TIM1四個通道CH1/CH2/CH3/CH4的PWM輸出?!究蓞⒖枷旅姹砀瘛?/p>

圖片

現(xiàn)在開始使用STM32CubeMx進行初始化配置。TIM1的時基配置如下:

圖片

將TIM1的CH1/CH2/CH3/CH4的比較輸出模式配置為匹配切換模式。這里關(guān)閉了CCR寄存器的預(yù)裝功能。

圖片

上圖中綠色圓圈里的用于比較的初始數(shù)據(jù),依據(jù)不同通道的占空比來擬定,不是很重要,只會影響到第一個脈沖的占空比。當然,也不能亂寫?!緸槭裁茨?,請自行思考下】

再來看看有關(guān)DMA的配置,4個通道都開啟了基于比較事件的DMA觸發(fā)請求,并使用循環(huán)傳輸模式。

圖片

基于CubeMx配置完成后,生成初始化工程代碼。

下面進行用戶代碼的添加和整理。假設(shè)四個通道輸出的占空比分別為70%,70%,40%,40%。為了實現(xiàn)4路不同輸出頻率及占空比的波形,需擬定一些用于比較切換的數(shù)據(jù),借助各個通道的比較事件觸發(fā)DMA,讓DMA適時修改相應(yīng)通道的比較寄存器的值,即修改CCRx的值?!具@個地方的實現(xiàn)原理很難一兩句完全寫清楚,有興趣的請先了解STM32定時器的比較切換模式,再結(jié)合DMA傳輸琢磨琢磨。下面表格是實現(xiàn)上面輸出需要用到的一些數(shù)據(jù)?!?/p>

圖片

結(jié)合上述表格的數(shù)據(jù),定義一些宏參數(shù)和內(nèi)存數(shù)組。內(nèi)存數(shù)組用來存放各個通道不同時刻的比較值。【本想放源碼文本上來的,因為可能有人需要驗證測試。但這里實在不好排版,只能貼圖了。抱歉!】

圖片

圖片

圖片

圖片

圖片

上面的四個數(shù)組分別對應(yīng)四個通道做比較切換輸出時需用到的比較值。這些數(shù)據(jù)的擬定需好好琢磨下。我剛開始在代碼里都是放的具體數(shù)據(jù),但考慮到不太好理解各個數(shù)據(jù)的含義。我這里特意將它們改成宏替換,旨在以宏替換的形式順便做個比較直觀的注釋,希望幫到有需要或感興趣的工程師

接下來添加具體的功能實現(xiàn)代碼。代碼不多,很簡單,都是基于HAL庫的??吹胶瘮?shù)名就大致知道什么意思了。下面的代碼就是本示例中用到功能代碼。它們的功能分別是使能相關(guān)定時器通道的比較輸出事件;開啟基于定時器比較事件的DMA傳輸并完成相關(guān)配置;使能各個定時器通道比較事件的DMA請求;使能TIM1的主輸出功能并開啟計數(shù)器的工作。

圖片

編譯調(diào)試整理后,運行程序查看結(jié)果.

圖片

從上面示波器測得結(jié)果來看,輸出波形滿足前面提到的設(shè)計要求。頻率、占空比跟我們設(shè)計要求的一致?!咀ⅲ?a href="http://www.www27dydycom.cn/v/tag/107/" target="_blank">手機模式下可點擊圖片放大查看】

在上面代碼的基礎(chǔ)上,我保持4個通道輸出的脈沖頻率不變,對各自占空比做下調(diào)整,分別調(diào)整為30%,30%,60%,60%【在上面代碼里只需調(diào)整那幾個Dutyn值】,顯然也能很好地實現(xiàn)各自的輸出。波形圖如下:

圖片

在上面示例中,我將TIM1的10Khz更新頻率做為配置CH1~CH4四個通道輸出的一個參考或基準。既然一個定時器可以實現(xiàn)4路不同頻率,那么多個定時器實現(xiàn)更多不同頻率的PWM輸出也就不難了。

關(guān)于使用1個定時器實現(xiàn)多路不同頻率輸出的示例就介紹到這里。本質(zhì)上它是基于定時器比較輸出功能的比較切換模式與DMA的靈活運用,拋磚引玉似地給大家提供些方法或思路。當我們將STM32各種定時器事件、定時器比較輸出切換模式以及DMA傳輸靈活而巧妙加以運用時,往往可以實現(xiàn)很多客制化的東西。

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

    關(guān)注

    31

    文章

    5434

    瀏覽量

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

    關(guān)注

    23

    文章

    3298

    瀏覽量

    118976
  • PWM輸出
    +關(guān)注

    關(guān)注

    1

    文章

    66

    瀏覽量

    6458
  • stm32cubemx
    +關(guān)注

    關(guān)注

    5

    文章

    286

    瀏覽量

    16283
  • HAL庫
    +關(guān)注

    關(guān)注

    1

    文章

    121

    瀏覽量

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

掃碼添加小助手

加入工程師交流群

    評論

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

    如何用定時器實現(xiàn)3時差和占空比可調(diào)的波形

    有人想實現(xiàn)下面的PWM輸出波形,三頻率相同,占空比同步可調(diào),且三輸出
    的頭像 發(fā)表于 07-06 15:22 ?2141次閱讀
    如何用<b class='flag-5'>一</b><b class='flag-5'>個</b><b class='flag-5'>定時器</b>實現(xiàn)3<b class='flag-5'>路</b>時差和占空比可調(diào)的<b class='flag-5'>波形</b>

    stm32同一個定時器不同的通道,可以不同時的輸出pwm波形嗎?

    請問,stm32的同一個定時器,不同的通道,可以不同時的輸出pwm波形嗎?比如tim1的ch1輸出,延時幾毫秒后tim1的ch2
    發(fā)表于 03-07 08:20

    stm32定時器輸出4pwm

    我用stm32 103fvet6 寫了程序。用定時器3輸出4pwm,分別對應(yīng)PA6,PA7
    發(fā)表于 05-10 22:53

    stm32定時器14只能輸出一路pwm波形嗎?

    stm32定時器14只能輸出一路pwm波形嗎?
    發(fā)表于 03-26 14:11

    如何去實現(xiàn)定時器輸出一路PWM波形的設(shè)計呢

    PWM是什么?如何去實現(xiàn)定時器輸出一路PWM波形的設(shè)計呢?有哪些步驟?
    發(fā)表于 11-15 06:04

    STM32F103是怎樣使用TIM4定時器輸出PWM的

    STM32F103使用TIM4定時器輸出PWM通過定時器4實現(xiàn)兩
    發(fā)表于 01-06 07:30

    定時器介紹

    同時用兩定時器控制蜂鳴器發(fā)聲, 定時器0控制頻率,定時器1控制同
    發(fā)表于 02-23 15:56 ?20次下載

    關(guān)于定時器輸出的PWM頻率范圍及占空比精度

    定時器輸出的PWM頻率范圍及占空比精度
    的頭像 發(fā)表于 03-12 10:37 ?1.4w次閱讀

    STM32單片機定時器輸出不同頻率PWM波

    (TIMx_CCRx)來設(shè)置占空比。定時器只有自動重裝載寄存(TIMx_ARR),但是
    發(fā)表于 11-23 18:21 ?18次下載
    STM32單片機<b class='flag-5'>一</b><b class='flag-5'>個</b><b class='flag-5'>定時器</b><b class='flag-5'>輸出</b>不同<b class='flag-5'>頻率</b>PWM波

    STM32-通用定時器-PWM輸出

    1 通用定時器PWM概述1.1STM32定時器輸出通道引腳這里以TIM3為例來講解。STM32的通用定時器分為TIM2、TIM3、TIM4、
    發(fā)表于 11-26 15:36 ?23次下載
    STM32-通用<b class='flag-5'>定時器</b>-PWM<b class='flag-5'>輸出</b>

    STM8學習筆記---定時器輸出7PWM波

    STM8S003F3P6單片機共有三定時器定時器1、定時器2、定時器4。其中
    發(fā)表于 11-26 16:06 ?9次下載
    STM8學習筆記---<b class='flag-5'>定時器</b><b class='flag-5'>輸出</b>7<b class='flag-5'>路</b>PWM波

    通過TIM輸出比較做一個定時器

    TIM是定時器模塊的簡稱。TIM的核心是16位的自由定時器(TCNT)。有8完整的16位的捕捉/比較(IC/OC)通道。 模塊運行時,
    發(fā)表于 11-26 20:21 ?11次下載
    通過TIM<b class='flag-5'>輸出</b>比較做<b class='flag-5'>一個</b><b class='flag-5'>定時器</b>

    STM32F4定時器獨立輸出PWM脈沖

    本文以STM32F405單片機為例,介紹如何用定時器的四通道獨立地輸出PWM脈沖。主要
    發(fā)表于 11-30 10:06 ?28次下載
    STM32F<b class='flag-5'>4</b>單<b class='flag-5'>定時器</b>獨立<b class='flag-5'>輸出</b>四<b class='flag-5'>路</b>PWM脈沖

    如何使用MAXQ微控制上的定時器B生成PWM波形

    MAXQ微控制有三種類型的定時器定時器0、定時器1和定時器2。定時器B是
    的頭像 發(fā)表于 02-20 13:44 ?1058次閱讀
    如何使用MAXQ微控制<b class='flag-5'>器</b>上的<b class='flag-5'>定時器</b>B生成PWM<b class='flag-5'>波形</b>

    stm32定時器能同時控制兩燈以不同頻率閃爍嗎?

    STM32的定時器功能強大,**STM32的定時器可以同時控制兩燈以不同頻率閃爍** 。
    的頭像 發(fā)表于 12-13 10:43 ?2937次閱讀