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

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

    文章

    3111

    瀏覽量

    75032
  • STM32
    +關注

    關注

    2290

    文章

    11018

    瀏覽量

    362715
  • uart
    +關注

    關注

    22

    文章

    1270

    瀏覽量

    103368
  • dma
    dma
    +關注

    關注

    3

    文章

    574

    瀏覽量

    102416
  • 開發板
    +關注

    關注

    25

    文章

    5565

    瀏覽量

    102776

原文標題: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 ?5335次閱讀
    基于<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 ?3141次閱讀

    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 ?4次下載
    <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 ?1384次閱讀
    <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 ?3次下載
    <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>市場和特性篇
    主站蜘蛛池模板: 失禁h啪肉尿出来高h受 | 婷婷亚洲综合五月天在线 | 五月天欧美 | 2021国产成人精品久久 | 前后灌满白浆护士 | 亚色影视 | 日本人六九视频69jzz免费 | 日本亚洲欧美国产日韩ay高清 | 可以免费看黄的网站 | 麻豆三级视频 | 国产真实乱在线更新 | 欧美八区 | 欧美人与动性行为网站免费 | 永久观看 | 欧美视频xxxxx | 国产精品久久女同磨豆腐 | 热99re久久精品2久久久 | 日韩va亚洲va欧美va浪潮 | 你懂的视频在线观看资源 | 第一页综合| 欧美一区二区三区激情啪啪 | 免费黄色在线视频 | 香港午夜理理伦_级毛片 | 色狠狠狠色噜噜噜综合网 | 国产精品久久久久久久久齐齐 | 久久国内 | 欧美aⅴ| 狠狠狠狠狠狠狠狠 | 我想看三级特黄 | 天天曰 | 噜噜爽| tom影院亚洲国产 | 国产性夜夜春夜夜爽 | 琪琪see色原在线20 | 在线观看的黄网 | 性做久久久久久久免费观看 | 亚洲婷婷综合中文字幕第一页 | 欧美白人极品性喷潮 | 亚洲激情视频 | 五月激情久久 | tube69xxxxhd日本 |