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

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

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

3天內不再提示

STM32的DMA簡介

CHANBAEK ? 來源:頭條號科G棧 ? 作者:頭條號科G棧 ? 2023-03-23 10:10 ? 次閱讀

DMAMCU一個非常重要的部分,它提供了一種直接、高效、快速的方式來傳輸數據,而不需要CPU的介入,大大提高了MCU的工作效率。

我們先來看一下沒有DMA,數據是怎么流動的。

poYBAGQbtPqAD6MIAAFSEzRZLjg412.jpg

如圖所示,紅色線表示外設數據的讀寫,藍色線表示內存數據的讀寫。數據必須要先加載到內核,然后再通過內核寫入外設或內存,讀寫操作都需要內核做很多工作,雖然C代碼可能就一行語句,但是匯編可不止一條。我們知道在程序執行的過程中這樣的數據傳輸操作非常頻繁,如果都這樣處理,內核將花費太多時間在搬運數據上,無法集中精力處理更為重要的計算和中斷事件,處理速度和效率就會非常的低。

使用DMA后,數據的流動變成了下圖所示方式。

pYYBAGQbtPyAGVjeAAFMVBOrMIk055.jpg

數據的傳輸工作由DMA控制器接管,假如我們配置由外設到內存,那么外設的數據一旦準備好,DMA就會自動將數據搬運到內存,內核只需要直接讀取內存就可以獲取到最新的外設數據。反過來也是同樣的道理。整個傳輸過程不需要內核的參與,如果數據量很大,DMA的優勢會非常明顯。

內核有點像一個工廠,SRAM類似倉庫,DMA就是物流。如果沒有“物流”,這個“工廠”就需要自己進貨、入庫、出庫、發貨,而如果有了“物流”,“工廠”就不需要進貨和發貨了,這對“工廠”的生產效率有質的提升。

STM32中,DMA控制器有多個通道,每個通道對應某幾個外設,使用前需要指定好該通道給哪個外設使用。

poYBAGQbtP2AJYSqAAG1fDj9AJ4763.jpg

具體使用DMA需要做下面的配置操作:

1、 使能DMA時鐘

2、 配置外設和內存地址

3、 配置傳輸的數據個數

4、 配置通道的優先級

5、 配置數據傳輸方向

6、 配置circular模式或normal模式

7、 配置外設/內存incremented模式

8、 配置外設/內存數據位數

9、 配置中斷,編寫中斷服務程序

10、使能DMA傳輸

之后內核只需要等待DMA中斷的到來即可,然后讀寫內存數據。DMA有四種中斷標志:全局中斷、傳輸完成中斷、半傳輸中斷、傳輸錯誤中斷,清除全局中斷標志可以將所有的中斷標志位清零。

DMA的外設和內存的數據位數可以不同,不同的位數傳輸最終的結果如下表所示:

pYYBAGQbtP6AAi4xAAOZRJWWnyo809.jpg

使用STM32的LL庫的代碼如下:

1、 打開時鐘

poYBAGQbtP-Af8isAAAMUGJTKlA533.jpg

2、 配置地址

pYYBAGQbtQCAbcZQAAAWNjWCxhQ117.jpg

這里ADC是外設。

3、 數據個數

poYBAGQbtQGASknqAAALoj9pYTY610.jpg

4、 優先級

pYYBAGQbtQKAfgTtAAAM0Lg0jf8585.jpg

5、 傳輸方向

poYBAGQbtQOASBd6AAAKavDp5BE266.jpg

6、 Circular模式

pYYBAGQbtQSAJe2XAAAM1ldykzs279.jpg

7、 Incremented模式

poYBAGQbtQWAXAIvAAAV3IViX-w397.jpg

這里外設只有一個寄存器,所以不需要increment,內存是一個數組,所以要increment。

8、 數據位

pYYBAGQbtQWAKEb4AAAWoMx89PE209.jpg

數據位可以是8位(BYTE)、16位(HALFWORD)、32位(WORD)

9、 中斷相關

pYYBAGQbtQeAegXoAABPpET0jbM275.jpg

pYYBAGQbtQeAAyYbAACtyp7hOPE242.jpg

10、 使能DMA

pYYBAGQbtQiAStVQAAAKeB7xgNo875.jpg

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

    關注

    146

    文章

    17123

    瀏覽量

    350994
  • cpu
    cpu
    +關注

    關注

    68

    文章

    10854

    瀏覽量

    211587
  • 內存
    +關注

    關注

    8

    文章

    3019

    瀏覽量

    74005
  • STM32
    +關注

    關注

    2270

    文章

    10895

    瀏覽量

    355744
  • dma
    dma
    +關注

    關注

    3

    文章

    560

    瀏覽量

    100548
收藏 人收藏

    評論

    相關推薦

    STM32實例教程-DMA實驗

    在前面我們提到過 DMA,這一章我們就來學習 STM32F1 的DMA 使用。要實現的功能是:通過 K_UP 按鍵控制 DMA 串口 1 數據的傳送,在傳送過程中讓 D2 指示燈不斷閃
    發表于 05-24 09:20 ?1227次閱讀
    <b class='flag-5'>STM32</b>實例教程-<b class='flag-5'>DMA</b>實驗

    DMA簡介

    DMA簡介STM32學習心得
    發表于 04-20 22:14

    ADC與DMA簡介

    文章目錄一、準備工具二、前置知識1.ADC簡介2.DMA簡介2.STM32Cubemx配置1.新建工程2.時鐘源選擇及時鐘樹配置3.時基選擇調試接口選擇4.配置ADC采集1.選擇要配置
    發表于 01-19 06:54

    STM32DMA簡介

    1、DMA簡介DMA(Direct Memory Access) :直接存儲器存取,是單片機的一個外設,它的主要功能是用來搬數據,但是不需要占用 CPU,即在傳輸數據的時候, CPU 可以干其他
    發表于 01-26 08:27

    1. stm32 mcu簡介

    1. stm32 mcu簡介 1.1 stm32 mcu結構 1.2 STM32 MCU存儲器映像 1.3 STM32 MCU系統時鐘樹 1
    發表于 10-25 19:06 ?15次下載
    1. <b class='flag-5'>stm32</b> mcu<b class='flag-5'>簡介</b>

    基于STM32F407的DMA解析-ADC單通道DMA讀取數據

    一:什么是DMA?1.DMA簡介DMA,全稱為:Direct Memory Access,即直接存儲器訪問。DMA 傳輸方式無需 CPU
    發表于 11-25 09:51 ?5次下載
    基于<b class='flag-5'>STM32</b>F407的<b class='flag-5'>DMA</b>解析-ADC單通道<b class='flag-5'>DMA</b>讀取數據

    STM32學習筆記(7)——DMA直接存儲器訪問

    STM32學習筆記(7)——DMA直接存儲器訪問一、DMA簡介二、DMA功能框圖1. DMA請求
    發表于 12-02 14:06 ?3次下載
    <b class='flag-5'>STM32</b>學習筆記(7)——<b class='flag-5'>DMA</b>直接存儲器訪問

    STM32F1開發指南筆記32----DMA

    本章介紹STM32F1的DMA。在本章中,我們將利用STM32F1的DMA來實現串口數據傳送,并在TFTLCD模塊上顯示當前的傳送進度。當CPU初始化這個傳輸動作,傳輸動作本身是由
    發表于 12-04 19:21 ?20次下載
    <b class='flag-5'>STM32</b>F1開發指南筆記32----<b class='flag-5'>DMA</b>

    STM32串口DMA發送數據

    一、DMA簡介二、實驗流程了解了DMA之后,我們做一個實驗:STM32采用串口DMA方式,用115200bps或更高速率向上位機連續發送數據
    發表于 12-07 10:36 ?22次下載
    <b class='flag-5'>STM32</b>串口<b class='flag-5'>DMA</b>發送數據

    Stm32DMA直接內存讀取(2021-07-30)

    Stm32DMA直接內存讀取1.DMA簡介DMA*(Direct Memory Access controller)*:可用于為CPU減
    發表于 12-09 15:36 ?10次下載
    <b class='flag-5'>Stm32</b>之<b class='flag-5'>DMA</b>直接內存讀取(2021-07-30)

    STM32基礎-----DMA

    STM32基礎-------DMA
    發表于 12-20 19:35 ?11次下載
    <b class='flag-5'>STM32</b>基礎-----<b class='flag-5'>DMA</b>

    STM32之串口DMA接收不定長數據

    目錄STM32之串口DMA接收不定長數據引言DMA簡介什么是DMASTM32
    發表于 12-24 19:03 ?30次下載
    <b class='flag-5'>STM32</b>之串口<b class='flag-5'>DMA</b>接收不定長數據

    DMA】淺談STM32F4xx的DMA(附初始化代碼)

    又到年末,事情總是格外的多,12月竟然沒有一點產出是不行的,今天就來分析一下DMA的作用【下附DMA映射表,可用于開發者自查】 簡介 DMA 即 Direct Memory Acces
    發表于 01-17 09:59 ?2次下載
    【<b class='flag-5'>DMA</b>】淺談<b class='flag-5'>STM32</b>F4xx的<b class='flag-5'>DMA</b>(附初始化代碼)

    STM32F1的DMA使用

    傳送完成。D1 指示燈閃爍提示系統正常運行。學習時可以參考《STM32F10x 中文參考手冊》-10 DMA 控制器(DMA)章節。 DMA 簡介
    的頭像 發表于 06-22 10:23 ?2834次閱讀
    <b class='flag-5'>STM32</b>F1的<b class='flag-5'>DMA</b>使用

    STM32 DMA傳輸的問題分析

    用戶使用STM32G473RET6芯片,開發環境STM32CubeMX+Keil(LL庫)。使用DMA1通道1,在半傳輸中斷和完全傳輸中斷里,拷貝ADC采集的數據。在應用過程中發現DMA
    的頭像 發表于 12-01 09:19 ?2905次閱讀
    <b class='flag-5'>STM32</b> <b class='flag-5'>DMA</b>傳輸的問題分析
    主站蜘蛛池模板: 花蝴蝶在线直播观看| 一受多攻高h| 中文字幕一区久久久久| 色偷偷888欧美精品久久久| 久久久久激情免费观看| 国内精品不卡一区二区三区| 东北女人奶大毛多水多| 诱受H嗯啊巨肉各种play| 久久久久久久网站| 国内精品七七久久影院| 国产白丝精品爽爽久久久久久蜜臀| 26uuu老色哥| 99热这里只有的精品| 尤物yw193can入口| 老湿影院色情a| 国产www视频| 最近韩国HD免费观看国语| 日本无码人妻精品一区二区视频 | 性肥胖BWBWBW| 狂操空姐电影| 调教女M屁股撅虐调教| 亚洲人交性视频| 日本边添边摸边做边爱边| 婚后被调教当众高潮H喷水| jealousvue成熟40岁| 曰本老头同性xxxxx| 久久99国产精品自在自在| 一区二区三区福利视频| 日韩欧美 亚洲视频| 开心色99xxxx开心色| 好男人社区| 九九精品久久| 黑人干日本美女| 精品夜夜澡人妻无码AV| 精品视频免费在线观看| 国产精品18久久久久久欧美| 91热久久免费频精品99欧美| 伊人久久亚洲综合天堂| 99re8在线视频精品| 国产午夜精品福利久久| jiucao在线观看精品|