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

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

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

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

STM32中DMA模塊的使用

h1654155971.7688 ? 來源:未知 ? 作者:李倩 ? 2018-06-11 08:49 ? 次閱讀

DMA(Direct Memory Access)常譯為“存儲(chǔ)器直接存取”。早在Intel的8086平臺(tái)上就有了DMA應(yīng)用了。

一個(gè)完整的微控制器通常由CPU、存儲(chǔ)器和外設(shè)等組件構(gòu)成。這些組件一般在結(jié)構(gòu)和功能上都是獨(dú)立的,而各個(gè)組件的協(xié)調(diào)和交互就由CPU完成。如此一來,CPU作為整個(gè)芯片的核心,其處理的工作量是很大的。如果CPU先從A外設(shè)拿到一個(gè)數(shù)據(jù)送給B外設(shè)使用,同時(shí)C外設(shè)又需要D外設(shè)提供一個(gè)數(shù)據(jù)。。。這樣的數(shù)據(jù)搬運(yùn)工作將使CPU的負(fù)荷顯得相當(dāng)繁重。

嚴(yán)格的說,搬運(yùn)數(shù)據(jù)只是CPU的比較不重要的一種工作。CPU最重要的工作室進(jìn)行數(shù)據(jù)運(yùn)算,從加減乘除到一些高級(jí)的運(yùn)算,包括浮點(diǎn)、積分、微分、FFT等。CPU還需要負(fù)責(zé)復(fù)雜的中斷申請(qǐng)和響應(yīng),以保證芯片的實(shí)時(shí)性能。

理論上常見的控制外設(shè),比如Usart、I2C、SPI甚至是USB通信接口,單純的利用CPU進(jìn)行協(xié)議模擬也是可以實(shí)現(xiàn)的,比如51單片機(jī)經(jīng)常使用I/O口模擬I2C協(xié)議通信。但這樣既浪費(fèi)了CPU的資源,同時(shí)實(shí)現(xiàn)后的性能表現(xiàn)往往和使用專門的硬件模塊實(shí)現(xiàn)的效果相差甚遠(yuǎn)。從這個(gè)角度來看,各個(gè)外設(shè)控制器的存在,無疑降低了CPU的負(fù)擔(dān),解放了CPU的資源。

數(shù)據(jù)搬運(yùn)這一工作占用了大部分的CPU資源,成為了降低CPU的工作效率的主要原因之一。于是需要一種硬件結(jié)構(gòu)分擔(dān)CPU這一職能——DMA。

從數(shù)據(jù)搬運(yùn)的角度看,如果要把存儲(chǔ)地址A的數(shù)值賦給另外一個(gè)地址上B的變量,CPU實(shí)現(xiàn)過程為首先讀出A地址上的數(shù)據(jù)存儲(chǔ)在一個(gè)中間變量,然后再轉(zhuǎn)送到B地址的變量上。使用DMA則不需要中間變量,直接將A地址的數(shù)值傳送到B地址的變量里。無疑減輕了CPU的負(fù)擔(dān),也提高了數(shù)據(jù)搬運(yùn)的效率。

stm32中DMA1有7個(gè)通道,DMA2有5個(gè)通道。DMA掛載的時(shí)鐘為AHB總線,其時(shí)鐘為72Mhz,所以可以實(shí)現(xiàn)高速數(shù)據(jù)搬運(yùn)。

stm32的DMA1通道一覽表

stm32使用DMA的相關(guān)操作:

1、DMA的配置

void DMA_Configuration(void){ DMA_InitTypeDefDMA_InitStructure; //DMA設(shè)置: //設(shè)置DMA源:內(nèi)存地址&串口數(shù)據(jù)寄存器地址 //方向:內(nèi)存-->外設(shè) //每次傳輸位:8bit //傳輸大小DMA_BufferSize=SENDBUFF_SIZE //地址自增模式:外設(shè)地址不增,內(nèi)存地址自增1 //DMA模式:一次傳輸,非循環(huán) //優(yōu)先級(jí):中 DMA_DeInit(DMA1_Channel4);//串口1的DMA傳輸通道是通道4 DMA_InitStructure.DMA_PeripheralBaseAddr = USART1_DR_Base; DMA_InitStructure.DMA_MemoryBaseAddr = (u32)SendBuff; DMA_InitStructure.DMA_DIR = DMA_DIR_PeripheralDST;//外設(shè)作為DMA的目的端 DMA_InitStructure.DMA_BufferSize = SENDBUFF_SIZE;//傳輸大小 DMA_InitStructure.DMA_PeripheralInc = DMA_PeripheralInc_Disable;//外設(shè)地址不增加 DMA_InitStructure.DMA_MemoryInc = DMA_MemoryInc_Enable;//內(nèi)存地址自增1 DMA_InitStructure.DMA_PeripheralDataSize = DMA_PeripheralDataSize_Byte; DMA_InitStructure.DMA_MemoryDataSize = DMA_MemoryDataSize_Byte; DMA_InitStructure.DMA_Mode = DMA_Mode_Circular;

//DMA_Mode_Normal(只傳送一次), DMA_Mode_Circular(不停地傳送) DMA_InitStructure.DMA_Priority = DMA_Priority_Medium;//(DMA傳送優(yōu)先級(jí)為中等) DMA_InitStructure.DMA_M2M = DMA_M2M_Disable; DMA_Init(DMA1_Channel4, &DMA_InitStructure);}

注:

1、傳輸通道:

通過查表,串口1的發(fā)送對(duì)應(yīng)的是DMA的通道4,所以此處選擇通道4.

2、DMA傳輸方式:

(1)DMA_Mode_Normal,正常模式,當(dāng)一次DMA數(shù)據(jù)傳輸完后,停止DMA傳送,對(duì)于上例而言,就是DMA_PeripheralDataSize_Byte個(gè)字節(jié)的傳送完成后,就停止傳送。

(2)DMA_Mode_Circular

循環(huán)模式,當(dāng)傳輸完一次后,重新接著傳送,永不停息。

2、外設(shè)的DMA方式設(shè)置

將串口1設(shè)置成DMA模式:

USART_DMACmd(USART1, USART_DMAReq_Tx, ENABLE);

3、待傳輸數(shù)據(jù)的定義和初始化

#define SENDBUFF_SIZE 10240vu8 SendBuff[SENDBUFF_SIZE];

for(i=0;i

4、開始DMA傳輸(使能對(duì)應(yīng)的DMA通道)DMA_Cmd(DMA1_Channel4, ENABLE);

5、DMA傳輸?shù)耐瓿?/p>

while(DMA_GetFlagStatus(DMA1_FLAG_TC4) == RESET) { LED_1_REV; //LED翻轉(zhuǎn) Delay(); //浪費(fèi)時(shí)間 }

當(dāng)傳輸完成后,就會(huì)跳出上面的死循環(huán)。

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

    關(guān)注

    68

    文章

    10889

    瀏覽量

    212379
  • STM32
    +關(guān)注

    關(guān)注

    2270

    文章

    10915

    瀏覽量

    356743
  • dma
    dma
    +關(guān)注

    關(guān)注

    3

    文章

    566

    瀏覽量

    100743

原文標(biāo)題:聊聊STM32中DMA模塊的使用

文章出處:【微信號(hào):weixin21ic,微信公眾號(hào):21ic電子網(wǎng)】歡迎添加關(guān)注!文章轉(zhuǎn)載請(qǐng)注明出處。

收藏 人收藏

    評(píng)論

    相關(guān)推薦

    STM32實(shí)例教程-DMA實(shí)驗(yàn)

    在前面我們提到過 DMA,這一章我們就來學(xué)習(xí) STM32F1 的DMA 使用。要實(shí)現(xiàn)的功能是:通過 K_UP 按鍵控制 DMA 串口 1 數(shù)據(jù)的傳送,在傳送過程
    發(fā)表于 05-24 09:20 ?1270次閱讀
    <b class='flag-5'>STM32</b>實(shí)例教程-<b class='flag-5'>DMA</b>實(shí)驗(yàn)

    淺談STM32DMA模塊的使用

    的錯(cuò)誤和偏差,歡迎“拍磚”和提出更正,蝦米在此感謝大家了。哈哈!什么是STM32DMA?其全稱是:Direct Memory Access;根據(jù)ST公司提供的相關(guān)信息,DMASTM32
    發(fā)表于 01-13 14:00

    STM32_DMA程序程序

    STM32 DMA程序程序,很好的學(xué)習(xí)資料,快來下載吧
    發(fā)表于 02-15 15:27 ?28次下載

    STM32 DMA應(yīng)用與性能分析

    STM32 DMA應(yīng)用與性能分析 學(xué)習(xí)資料,感興趣的小伙伴們可以瞧一瞧。
    發(fā)表于 09-06 17:33 ?11次下載

    基于STM32采用DMA實(shí)現(xiàn)方波的產(chǎn)生和捕獲

    基于STM32采用DMA實(shí)現(xiàn)方波的產(chǎn)生和捕獲
    發(fā)表于 09-26 08:53 ?23次下載
    基于<b class='flag-5'>STM32</b><b class='flag-5'>中</b>采用<b class='flag-5'>DMA</b>實(shí)現(xiàn)方波的產(chǎn)生和捕獲

    STM32F1開發(fā)指南筆記32----DMA

    本章介紹STM32F1的DMA。在本章,我們將利用STM32F1的DMA來實(shí)現(xiàn)串口數(shù)據(jù)傳送,并在TFTLCD
    發(fā)表于 12-04 19:21 ?20次下載
    <b class='flag-5'>STM32</b>F1開發(fā)指南筆記32----<b class='flag-5'>DMA</b>

    STM32斷與串口DMA通信

    本篇博文基于完成嵌入式實(shí)驗(yàn)的目的,具體內(nèi)容如下:學(xué)習(xí)stm32斷、DMA通信原理和編程方法。使用stm32tubemx和HAL庫(kù)分別完成以下編程練習(xí):1. 用
    發(fā)表于 12-06 20:36 ?11次下載
    <b class='flag-5'>STM32</b><b class='flag-5'>中</b>斷與串口<b class='flag-5'>DMA</b>通信

    STM32基礎(chǔ)-----DMA

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

    STM32 DMA串口接收不定長(zhǎng)數(shù)據(jù)

    STM32 DMA串口接收不定長(zhǎng)數(shù)據(jù)
    發(fā)表于 12-24 18:50 ?40次下載
    <b class='flag-5'>STM32</b>  <b class='flag-5'>DMA</b>串口接收不定長(zhǎng)數(shù)據(jù)

    STM32之串口DMA接收不定長(zhǎng)數(shù)據(jù)

    目錄STM32之串口DMA接收不定長(zhǎng)數(shù)據(jù)引言DMA簡(jiǎn)介什么是DMASTM32DMA資源
    發(fā)表于 12-24 19:03 ?30次下載
    <b class='flag-5'>STM32</b>之串口<b class='flag-5'>DMA</b>接收不定長(zhǎng)數(shù)據(jù)

    STM32斷與DMA通信編程

    STM32斷與DMA通信編程中斷模式編程CubeMx創(chuàng)建項(xiàng)目Keil修改代碼串口中斷cubeMX創(chuàng)建項(xiàng)目Keil修改代碼DMA方式Keil修改代碼總結(jié)參考中斷模式編程用
    發(fā)表于 12-24 19:06 ?10次下載
    <b class='flag-5'>STM32</b><b class='flag-5'>中</b>斷與<b class='flag-5'>DMA</b>通信編程

    STM32F1的DMA使用

    在前面我們提到過 DMA,這一章我們就來學(xué)習(xí) STM32F1 的DMA 使 用。要實(shí)現(xiàn)的功能是:通過 K_UP 按鍵控制 DMA 串口 1 數(shù)據(jù)的傳送,在傳送過程
    的頭像 發(fā)表于 06-22 10:23 ?2933次閱讀
    <b class='flag-5'>STM32</b>F1的<b class='flag-5'>DMA</b>使用

    STM32L4直接訪問內(nèi)存模塊(DMA)介紹

    電子發(fā)燒友網(wǎng)站提供《STM32L4直接訪問內(nèi)存模塊(DMA)介紹.pdf》資料免費(fèi)下載
    發(fā)表于 08-01 10:15 ?1次下載
    <b class='flag-5'>STM32</b>L4直接訪問內(nèi)存<b class='flag-5'>模塊</b>(<b class='flag-5'>DMA</b>)介紹

    STM32 DMA傳輸?shù)膯栴}分析

    用戶使用STM32G473RET6芯片,開發(fā)環(huán)境STM32CubeMX+Keil(LL庫(kù))。使用DMA1通道1,在半傳輸中斷和完全傳輸中斷里,拷貝ADC采集的數(shù)據(jù)。在應(yīng)用過程中發(fā)現(xiàn)DMA
    的頭像 發(fā)表于 12-01 09:19 ?3061次閱讀
    <b class='flag-5'>STM32</b> <b class='flag-5'>DMA</b>傳輸?shù)膯栴}分析

    STM32DMA的五大問題

    1,DMA控制器的內(nèi)部結(jié)構(gòu)STM32DMA控制器是一種用于在外設(shè)和存儲(chǔ)器之間傳輸數(shù)據(jù)的專用硬件。DMA控制器的內(nèi)部結(jié)構(gòu)主要包括以下幾個(gè)關(guān)
    的頭像 發(fā)表于 12-10 08:00 ?2022次閱讀
    <b class='flag-5'>STM32</b>的<b class='flag-5'>DMA</b>的五大問題
    主站蜘蛛池模板: 久久国产免费观看| 国产日日干| 一级看片免费视频囗交| se色综合视频| 一区二区三区影视| videosxxoo18在线| 日本一区免费看| 中国业余老太性视频| 亚洲精品视频区| 天堂视频网| 三级免费黄色片| 你懂的网站在线观看| 狠狠色影院| 亚洲成a人片在线看| 欧美福利在线播放| 欧美涩色| fxxx性xxx性| 四虎免费永久观看| 欧美sese| 成人羞羞视频国产| 视频福利网| 好爽好紧好大的免费视频国产| 日本级毛片免费观看| 亚洲色图综合图区| 欧美四级在线| 成人淫片| 手机看片自拍| xxxx 欧美| 亚洲国产成人最新精品资源| 日本成人黄色网址| 国产美女特级嫩嫩嫩bbb| 天天躁狠狠躁| 午夜 dy888理论久久| 国产亚洲第一| 日本午夜三级| 成人精品在线观看| 美女视频黄a视频免费全过程| 成人欧美网站| 午夜免费福利片观看| 久久久久免费精品国产小说| 日本一道dvd在线中文字幕|