色哟哟视频在线观看-色哟哟视频在线-色哟哟欧美15最新在线-色哟哟免费在线观看-国产l精品国产亚洲区在线观看-国产l精品国产亚洲区久久

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

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

3天內不再提示

STM32G4 UART+TIMER+DMA應用示例

茶話MCU ? 來源:茶話MCU ? 2023-11-27 10:42 ? 次閱讀

這里使用STM32G4系列Nucleo開發板演示如下需求的實現過程。

TIMER2使用3個通道的PWM輸出,占空比可能被不時修改。修改的數據通過UART傳輸過來,UART接收的數據通過DMA傳輸到內存。新的數據接收后,基于TIMER更新事件觸發DMA,利用TIMER的更新事件觸發DMA Burst 而一次性用新數據修改3個通道的CCR值以調整PWM輸出。每次新數據的接收允許以產生按鍵動作為準,即每次按鍵動作允許一次數據更新。

73121b38-8c23-11ee-939d-92fbcf53809c.png

這里有兩點要注意,TIM2是32位定時器,3個CCR數據使用32位格式。另外,3個數據的修改基于更新事件一次性修改,不能出現混亂,即不可以某一個時刻3個CCR寄存器的數據不是來自同一批的。為了避免數據混亂這種情況,我這里平常禁止TIMER2的更新事件的產生,只有每次收到新數據后才臨時允許更新事件的產生,并在TIMER觸發的DMA完成中斷里再次禁止更新事件的產生。

使用LPUART從外部接收新數據,選用LPUART主要原因是它的TX/RX剛好跟G4Nucleo開發板的虛擬串口接在一起的,并無其它特別原因。至于按鍵就選用板載按鍵PC13,并開啟了對應的外部中斷。

大致的數據傳輸流程如下圖所示:

73255220-8c23-11ee-939d-92fbcf53809c.png

關于定時器更新事件的能否產生的控制由TIMER的控制寄存器里的UDIS位決定:

734d78ea-8c23-11ee-939d-92fbcf53809c.png

我在代碼里對該位的操作,寫成宏的方式,便于閱讀。

73766a7a-8c23-11ee-939d-92fbcf53809c.png

該位默認為0。若該位被軟件置1,定時器的更新事件將不能產生,意味著開啟預裝功能時,影子寄存器內容不能被更新,同時也不能因溢出操作、計數器復位操作而觸發相應中斷或DMA請求 。

測試代碼的里幾個主要的基本操作:

一、響應按鍵事件,啟動UART的DMA接收。

HAL_UART_Receive_DMA(&hlpuart1,(uint8_t*)CCR_rx, 12);

二、基于UART事件的DMA接收完成中斷,允許TIMER更新事件的產生,并啟動基于TIMER更新事件的DMA Burst 傳輸。

Permit_UpdateEvt; //Updated event permitted

HAL_TIM_DMABurst_MultiWriteStart(&htim2,TIM_DMABASE_CCR1,TIM_DMA_UPDATE,(uint32_t*)CCR_rx,TIM_DMABURSTLENGTH_3TRANSFERS,3);

三、基于TIMER事件的DMA完成中斷,禁止更新事件的產生,并基于串口通信提示可以接受下次數據更新。

__HAL_TIM_CLEAR_FLAG(&htim2,TIM_FLAG_UPDATE);

Forbid_UpdateEvt;//update event forbidden

Indicating_CCR_Updated();

再看看基本的CubeMx配置,配置比較簡單。下面是LPUART的配置貼圖。

73839f4c-8c23-11ee-939d-92fbcf53809c.png

739e7fc4-8c23-11ee-939d-92fbcf53809c.png

我開啟LPUART 的DMA接收,其發送功能使用查詢阻塞模式,主要用來輸出一些提示信息

下面是TIM2的一些基本配置截圖。開啟3個通道的PWM輸出和基于TIMER更新事件的DMA傳輸。

73affb46-8c23-11ee-939d-92fbcf53809c.png

73c055c2-8c23-11ee-939d-92fbcf53809c.png

最后,我們來簡單驗證下。下面截圖就是通過串口助手鍵入新數據后TIMER的輸出結果。

73d42066-8c23-11ee-939d-92fbcf53809c.png

整體上,操作流程就是每次按鍵操作提示可以修改占空比了;串口終端鍵入新的3個字的數據,基于UART接收事件的DMA傳輸完成后提示數據收到;基于TIMER事件的DMA完成完成后提示數據更新結束,提示等待下次按鍵動作。

好,今天的分享就到這里,下次再聊。如果有人想要完整的測試工程代碼的話,可以私下留言,只要時間不是過去太久且我這邊有保存的話,都可以分享供參考。

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

    關注

    8

    文章

    3019

    瀏覽量

    74003
  • STM32
    +關注

    關注

    2270

    文章

    10895

    瀏覽量

    355739
  • uart
    +關注

    關注

    22

    文章

    1235

    瀏覽量

    101354
  • dma
    dma
    +關注

    關注

    3

    文章

    560

    瀏覽量

    100546
  • 開發板
    +關注

    關注

    25

    文章

    5032

    瀏覽量

    97372

原文標題:STM32G4 UART+TIMER+DMA應用示例

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

收藏 人收藏

    評論

    相關推薦

    如何使用STM32CubeMX HAL通過DMA + DAC生成STM32G474信號?

    我正在嘗試使用 DMASTM32G474 上使用 DAC 生成周期信號。有很多這樣的例子,我過去用 STM32L4 和 F4 也做過同樣的事情,沒有任何問題。但是,我不確定
    發表于 12-15 07:17

    請問STM32G4是不是不具備雙緩沖DMA功能啊?

    請問STM32G4是不是不具備雙緩沖DMA功能啊?
    發表于 12-16 06:08

    基于STM32G4芯片的DAC應用示例分享

    。這里要演示的基本功能就是讓DAM將內存數據周期性傳輸給DAC數據寄存器,最后輸出一路正弦波。 結合STM32G4芯片的特性,這里可以有兩種實現方式。 第一種,DMA的請求來自于DAC1的轉換事件。第二種,DMA的請求來自于定時
    的頭像 發表于 11-26 11:39 ?4726次閱讀
    基于<b class='flag-5'>STM32G4</b>芯片的DAC應用<b class='flag-5'>示例</b>分享

    通過STM32 UARTDMA修改TIMER占空比示例

    現在有人談到這樣一個需求,他使用STM32F429芯片做開發,其中用到TIM2做3路PWM輸出。另外有個上位機跟STM32UART接口相連,上位機可能不定期地需要通過UART接口給
    的頭像 發表于 11-12 15:33 ?2503次閱讀

    STM32G4 系列壽命估算

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

    AN5306_OPAMP在STM32G4系列中的應用

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

    AN4232_STM32F3和 STM32G4的模擬比較器入門指南

    AN4232_STM32F3和 STM32G4的模擬比較器入門指南
    發表于 11-21 17:06 ?10次下載
    AN4232_<b class='flag-5'>STM32</b>F3和 <b class='flag-5'>STM32G4</b>的模擬比較器入門指南

    AN5310_使用STM32F3系列與STM32G4系列設備的模擬特性指南

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

    STM32G4系列安全手冊

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

    STM32G4電機驅動實例

    電子發燒友網站提供《STM32G4電機驅動實例.pdf》資料免費下載
    發表于 07-31 17:00 ?9次下載
    <b class='flag-5'>STM32G4</b>電機驅動實例

    基于STM32G4的電機控制項目開發

    電子發燒友網站提供《基于STM32G4的電機控制項目開發.pdf》資料免費下載
    發表于 08-01 16:35 ?19次下載
    基于<b class='flag-5'>STM32G4</b>的電機控制項目開發

    STM32G4 應用程序與 Option Bytes 同時燒錄問題

    STM32G4 應用程序與 Option Bytes 同時燒錄問題
    的頭像 發表于 09-28 18:02 ?1047次閱讀
    <b class='flag-5'>STM32G4</b> 應用程序與 Option Bytes 同時燒錄問題

    STM32G4中ADC觸發分頻的實現方式

    電子發燒友網站提供《STM32G4中ADC觸發分頻的實現方式.pdf》資料免費下載
    發表于 09-19 16:38 ?6次下載
    <b class='flag-5'>STM32G4</b>中ADC觸發分頻的實現方式

    STM32G4 Advanced Timer Break功能詳解

    電子發燒友網站提供《STM32G4 Advanced Timer Break功能詳解.pdf》資料免費下載
    發表于 09-19 15:09 ?1次下載
    <b class='flag-5'>STM32G4</b> Advanced <b class='flag-5'>Timer</b> Break功能詳解

    STM32G4市場和特性篇

    電子發燒友網站提供《STM32G4市場和特性篇.pdf》資料免費下載
    發表于 09-19 14:44 ?1次下載
    <b class='flag-5'>STM32G4</b>市場和特性篇
    主站蜘蛛池模板: 99国产精品久久久久久久日本竹| 欧美丰满白嫩bbxx| 国产亚洲精品久久久久5区| 帝王被大臣们调教高肉| 俺也去最新地址| 99精品视频在线| 99久久综合国产精品免费| 最美白嫩的极品美女ASSPICS| 一级毛片西西人体44rt高清| 亚洲国产在线精品国偷产拍| 亚洲AV永久无码精品老司机蜜桃| 天天躁夜夜踩很很踩2022| 手机在线成人精品视频网| 上原结衣快播| 午夜福利理论片在线播放| 无码射肉在线播放视频| 小sao货水好多真紧h的视频| 小夫妻天天恶战| 性直播免费| 亚洲男人在线观看| 亚洲熟女乱色一区二区三区| 亚洲性无码av在线| 中文字幕一区中文亚洲| 2022年国产精品久久久久| 99精品视频在线免费观看| 成年人免费观看视频网站| 国产成人精品免费视频下载| 国产精品97久久AV麻豆| 国产美女影院| 精品无人区麻豆乱码无限制| 久久亚洲这里只有精品18| 暖暖视频免费观看高清完整版| 青青涩射射| 午夜黄视频| 又硬又粗又大一区二区三区视频| 69精品国产人妻蜜桃国产毛片| caoporm国产精品视频免费| 国产超碰AV人人做人人爽| 国产在线观看免费| 美女扒开腿让男人桶个爽| 欧美午夜不卡在线观看|