那曲檬骨新材料有限公司

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

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

3天內不再提示

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

冬至子 ? 來源:茶話MCU ? 作者:MilerShao ? 2023-07-06 15:57 ? 次閱讀

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

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

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

基于上述條件,TIM1的10KHz更新頻率所對應的計數脈沖個數則為17000,那么,20KHz、50KHz、70KHz、80KHz所對應的計數脈沖個數分別是8500、3400、2428、2125,分別對應著TIM1四個通道CH1/CH2/CH3/CH4的PWM輸出。【可參考下面表格】

圖片

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

圖片

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

圖片

上圖中綠色圓圈里的用于比較的初始數據,依據不同通道的占空比來擬定,不是很重要,只會影響到第一個脈沖的占空比。當然,也不能亂寫。【為什么呢,請自行思考下】

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

圖片

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

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

圖片

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

圖片

圖片

圖片

圖片

圖片

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

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

圖片

編譯調試整理后,運行程序查看結果.

圖片

從上面示波器測得結果來看,輸出波形滿足前面提到的設計要求。頻率、占空比跟我們設計要求的一致。【注:手機模式下可點擊圖片放大查看】

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

圖片

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

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

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

    關注

    31

    文章

    5363

    瀏覽量

    121171
  • 定時器
    +關注

    關注

    23

    文章

    3255

    瀏覽量

    115373
  • PWM輸出
    +關注

    關注

    1

    文章

    66

    瀏覽量

    5219
  • stm32cubemx
    +關注

    關注

    5

    文章

    284

    瀏覽量

    15005
  • HAL庫
    +關注

    關注

    1

    文章

    121

    瀏覽量

    6382
收藏 人收藏

    評論

    相關推薦

    如何用定時器實現3時差和占空比可調的波形

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

    stm32定時器輸出4pwm

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

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

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

    如何去實現定時器輸出一路PWM波形的設計呢

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

    利用定時器B的比較功能輸出PWM波形

    思路:利用定時器B的比較功能輸出PWM波形定時器B定時器B的特點:1)異步16位
    發表于 11-29 06:52

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

    STM32F103使用TIM4定時器輸出PWM通過定時器4實現兩
    發表于 01-06 07:30

    定時器介紹

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

    關于定時器輸出的PWM頻率范圍及占空比精度

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

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

    (TIMx_CCRx)來設置占空比。定時器只有自動重裝載寄存(TIMx_ARR),但是
    發表于 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
    發表于 11-26 15:36 ?23次下載
    STM32-通用<b class='flag-5'>定時器</b>-PWM<b class='flag-5'>輸出</b>

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

    STM8S003F3P6單片機共有三定時器定時器1、定時器2、定時器4。其中
    發表于 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)通道。 模塊運行時,
    發表于 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脈沖。主要
    發表于 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是
    的頭像 發表于 02-20 13:44 ?823次閱讀
    如何使用MAXQ微控制<b class='flag-5'>器</b>上的<b class='flag-5'>定時器</b>B生成PWM<b class='flag-5'>波形</b>

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

    STM32的定時器功能強大,**STM32的定時器可以同時控制兩燈以不同頻率閃爍** 。
    的頭像 發表于 12-13 10:43 ?2362次閱讀
    百家乐有没有稳赢| 百家乐打印机破解| 大发888sut8| 威尼斯人娱乐场申博太阳城| bet365打不开| 真人百家乐官网开户优惠| 宝马会百家乐现金网| 德州扑克大小| 怎么赌百家乐官网能赢| 五星百家乐的玩法技巧和规则| 遂昌县| 女神百家乐官网的玩法技巧和规则 | 百家乐怎么稳赢| 洛浦县| 百家乐是骗人吗| 大发888网站多少| 澳门百家乐官网赌博技巧| 先锋百家乐的玩法技巧和规则| 南充市| 百家乐高档筹码| 大丰收娱乐城开户| 真人百家乐官网怎么玩| 哪个棋牌游戏平台好| 百家乐官网投住系统| 百家乐长t恤| 百家乐官网作弊知识| 澳门百家乐网络游戏信誉怎么样| 百家乐官网和局投注法| 百合百家乐的玩法技巧和规则| 百家乐官网太阳城球讯网| 百家乐赌马| 赌博百家乐官网秘笈| 澳门百家乐论| 现场百家乐官网牌路分析| 赌球网站排名| 世嘉百家乐官网的玩法技巧和规则| 大发888赢钱技巧| 百家乐官网投注网出租| 盛京棋牌网| 百家乐分析绿色版| 赌百家乐官网的方法|