国产 无码 综合区,色欲AV无码国产永久播放,无码天堂亚洲国产AV,国产日韩欧美女同一区二区

STM32 cubemx配置USART DMA傳輸

這篇具有很好參考價值的文章主要介紹了STM32 cubemx配置USART DMA傳輸。希望對大家有所幫助。如果存在錯誤或未考慮完全的地方,請大家不吝賜教,您也可以點擊"舉報違法"按鈕提交疑問。


前言

本篇文章來講解DMA的概念,并使用DMA來進行串口的數(shù)據(jù)收發(fā)。

一、DMA概念

DMA(Direct Memory Access,直接內(nèi)存訪問)是一種計算機系統(tǒng)的技術,允許外部設備(如硬盤驅(qū)動器、網(wǎng)絡適配器或圖形卡)直接與計算機內(nèi)存進行數(shù)據(jù)傳輸,而不需要CPU的直接參與。這種直接的內(nèi)存訪問可以提高數(shù)據(jù)傳輸?shù)男?,并減輕CPU的負擔。
在沒有DMA的情況下,數(shù)據(jù)傳輸通常需要通過CPU來完成,這涉及到CPU的中斷處理程序從設備讀取數(shù)據(jù),然后將數(shù)據(jù)寫入內(nèi)存,或者從內(nèi)存讀取數(shù)據(jù),然后將數(shù)據(jù)發(fā)送到設備。這種方式會消耗CPU的時間和計算資源,限制了系統(tǒng)的性能和吞吐量。
通過DMA技術,外部設備可以直接與系統(tǒng)內(nèi)存進行數(shù)據(jù)傳輸,而不需要CPU的干預。在DMA傳輸開始之前,系統(tǒng)配置好DMA控制器,并提供一個DMA緩沖區(qū),外部設備可以將數(shù)據(jù)直接寫入到該緩沖區(qū)或者從該緩沖區(qū)讀取數(shù)據(jù)。當DMA傳輸完成后,DMA控制器會發(fā)出一個中斷信號,以通知CPU。

使用DMA的好處包括:

1.提高數(shù)據(jù)傳輸速度:由于數(shù)據(jù)傳輸不需要CPU的介入,DMA可以以更高的速度進行數(shù)據(jù)傳輸,從而提高系統(tǒng)性能和吞吐量。
2.減輕CPU負擔:傳統(tǒng)的數(shù)據(jù)傳輸需要CPU的參與,消耗CPU的時間和計算資源。而使用DMA進行數(shù)據(jù)傳輸時,CPU可以專注于其他的計算任務,減輕了CPU的負擔。
3.支持大規(guī)模數(shù)據(jù)傳輸:DMA技術可以支持大規(guī)模的數(shù)據(jù)傳輸,例如高清視頻流、大型文件和網(wǎng)絡數(shù)據(jù)包的處理。

總之,DMA是一種能夠提高系統(tǒng)性能和數(shù)據(jù)傳輸效率的技術,通過允許外部設備直接與內(nèi)存進行數(shù)據(jù)傳輸,減少了CPU的介入。這在需要高速、大量或連續(xù)數(shù)據(jù)傳輸?shù)膱鼍爸刑貏e有用,如高性能計算、網(wǎng)絡通信和存儲系統(tǒng)等。

二、STM32 DMA數(shù)據(jù)手冊分析

從DMA的描述來看在STM32 F103這款芯片中有DMA1和DMA2,DMA1有7個通道,DMA2有5個通道。
stm32cubemx dma,STM32框架式編程,stm32,嵌入式硬件,單片機,原力計劃
DMA架構圖:
DMA支持直接和SRMA進行數(shù)據(jù)的傳輸,不需要經(jīng)過CPU,這樣就可以讓CPU去做其他的事情,提高系統(tǒng)的運行效率。

stm32cubemx dma,STM32框架式編程,stm32,嵌入式硬件,單片機,原力計劃
使用DMA(Direct Memory Access)進行數(shù)據(jù)傳輸時,通常需要經(jīng)過以下步驟:

1.設置DMA控制器:首先,需要在系統(tǒng)中配置和設置DMA控制器。這包括設置DMA的源地址和目標地址,傳輸長度,傳輸方向(從內(nèi)存到設備或從設備到內(nèi)存),以及其他相關參數(shù)。

2.發(fā)送DMA請求:在數(shù)據(jù)傳輸之前,需要向DMA控制器發(fā)送DMA請求。該請求通常由CPU或設備發(fā)起,用于指示DMA控制器執(zhí)行特定的數(shù)據(jù)傳輸操作。

3.DMA傳輸:一旦DMA請求被接收和識別,DMA控制器將啟動數(shù)據(jù)傳輸。它將直接從源地址讀取數(shù)據(jù),并將數(shù)據(jù)傳輸?shù)侥繕说刂?。在傳輸過程中,DMA控制器繞過CPU,直接控制內(nèi)存和設備之間的數(shù)據(jù)傳輸,以提高數(shù)據(jù)傳輸效率并減輕CPU的負擔。

4.中斷或完成通知:一旦DMA傳輸完成,DMA控制器通常會生成一個中斷信號或發(fā)送一個完成通知,以通知CPU或相關設備傳輸已經(jīng)完成。

正常進行數(shù)據(jù)的發(fā)送:

不使用DMA進行串口的數(shù)據(jù)發(fā)送時,CPU需要從SRMA中讀取出存儲的數(shù)據(jù),然后再發(fā)送給串口,發(fā)送少量數(shù)據(jù)是不會影響CPU執(zhí)行其他事情的,假如我想發(fā)送10000個數(shù)據(jù),那么這個時候就會讓CPU處于一直在發(fā)送數(shù)據(jù)的狀態(tài),這樣就會影響到其他程序的執(zhí)行。

stm32cubemx dma,STM32框架式編程,stm32,嵌入式硬件,單片機,原力計劃
根據(jù)手冊描述DMA和CPU共享總線來執(zhí)行直接的內(nèi)存?zhèn)鬏敗?br>stm32cubemx dma,STM32框架式編程,stm32,嵌入式硬件,單片機,原力計劃

DMA可以直接訪問到外設和SRMA,那么這樣就不需要CPU來進行數(shù)據(jù)的讀取交換了,直接使用DMA就可以解決這個問題,那么這樣的話就可以提高系統(tǒng)的運行效率了。
stm32cubemx dma,STM32框架式編程,stm32,嵌入式硬件,單片機,原力計劃

3.DMA模式介紹

下面我們來看到DMA的兩種模式,一種是循環(huán)模式,一種是內(nèi)存到內(nèi)存的模式。
stm32cubemx dma,STM32框架式編程,stm32,嵌入式硬件,單片機,原力計劃

DMA的循環(huán)模式(Circular Mode):
在循環(huán)模式下,DMA傳輸?shù)臄?shù)據(jù)可以在源和目的地之間循環(huán)傳輸,以連續(xù)地進行數(shù)據(jù)傳輸操作。這種模式下,一旦DMA傳輸完成,它會自動重新開始下一輪傳輸,而無需軟件干預。
循環(huán)模式對于需要在連續(xù)數(shù)據(jù)塊之間進行重復傳輸?shù)膽梅浅S杏?,如音頻、視頻流等。它可以在不中斷DMA傳輸?shù)那闆r下循環(huán)傳輸數(shù)據(jù),大大提高了數(shù)據(jù)傳輸效率和系統(tǒng)性能。

DMA的內(nèi)存到內(nèi)存模式(Memory-to-memory Mode):
內(nèi)存到內(nèi)存模式允許DMA直接在兩個內(nèi)存區(qū)域之間進行數(shù)據(jù)傳輸,而無需外設的參與。在這種模式下,DMA通道可以從一個內(nèi)存位置讀取數(shù)據(jù),并將數(shù)據(jù)直接寫入另一個內(nèi)存位置,而不需要CPU的介入。
內(nèi)存到內(nèi)存模式非常適用于需要在內(nèi)存之間快速傳輸數(shù)據(jù)的應用場景,例如內(nèi)存拷貝、內(nèi)存填充等。通過使用這種模式,DMA可以獨立地執(zhí)行數(shù)據(jù)傳輸,減輕CPU的負擔,提高傳輸效率。

總結(jié):DMA的循環(huán)模式允許數(shù)據(jù)在源和目的地之間循環(huán)傳輸,連續(xù)進行數(shù)據(jù)傳輸操作,并在每次傳輸完成后自動重新開始下一輪傳輸。而DMA的內(nèi)存到內(nèi)存模式允許DMA直接在兩個內(nèi)存區(qū)域之間傳輸數(shù)據(jù),而不需要外設的觸發(fā)請求,并且能夠快速、高效地在內(nèi)存之間傳輸數(shù)據(jù)。這兩種模式都有助于提高數(shù)據(jù)傳輸效率并減輕CPU的負擔,適用于不同的應用場景。

4.cubemx配置

配置一個LED燈觀察實驗現(xiàn)象:
stm32cubemx dma,STM32框架式編程,stm32,嵌入式硬件,單片機,原力計劃
配置串口1:
stm32cubemx dma,STM32框架式編程,stm32,嵌入式硬件,單片機,原力計劃
開啟串口中斷:
這里不開啟串口中斷的話無法判斷串口是否發(fā)送完成一次數(shù)據(jù),這樣串口就一直處于忙狀態(tài)導致完成進行下一次的發(fā)送。

stm32cubemx dma,STM32框架式編程,stm32,嵌入式硬件,單片機,原力計劃
DMA通道設置:

TX設置為從內(nèi)存到外設,因為串口的發(fā)送就是把內(nèi)存中的數(shù)據(jù)取出來再發(fā)給外設,RX設置為從外設到內(nèi)存,串口發(fā)送過來的數(shù)據(jù)將會保存在內(nèi)存中。

模式選擇Normal,循環(huán)模式的話只需要調(diào)用一次發(fā)送函數(shù)就會一直進行數(shù)據(jù)的發(fā)送了。

stm32cubemx dma,STM32框架式編程,stm32,嵌入式硬件,單片機,原力計劃

具體代碼:
這里發(fā)送一個非常長的數(shù)據(jù),同時讓這個LED閃爍,看看串口的發(fā)送會不會影響到LED的閃爍,結(jié)果是不會的。

uint8_t msg[1024] = "hellohellohellohellohellohellohellohellohellohellohellohellohellohellohellohellohellohellohellohellohellohellohellohellohellohellohellohellohellohellohellohellohello";

  while (1)
  {
    /* USER CODE END WHILE */

    /* USER CODE BEGIN 3 */
		HAL_UART_Transmit_DMA(&huart1, msg, strlen(msg) + 1);
		
		
		HAL_GPIO_TogglePin(GPIOB, GPIO_PIN_5);
		HAL_Delay(100);
  }

總結(jié)

本篇文章就講解到這里,下篇文章我們講解DMA的具體配置和DMA串口接收不定長數(shù)據(jù)。文章來源地址http://www.zghlxwxcb.cn/news/detail-678799.html

到了這里,關于STM32 cubemx配置USART DMA傳輸?shù)奈恼戮徒榻B完了。如果您還想了解更多內(nèi)容,請在右上角搜索TOY模板網(wǎng)以前的文章或繼續(xù)瀏覽下面的相關文章,希望大家以后多多支持TOY模板網(wǎng)!

本文來自互聯(lián)網(wǎng)用戶投稿,該文觀點僅代表作者本人,不代表本站立場。本站僅提供信息存儲空間服務,不擁有所有權,不承擔相關法律責任。如若轉(zhuǎn)載,請注明出處: 如若內(nèi)容造成侵權/違法違規(guī)/事實不符,請點擊違法舉報進行投訴反饋,一經(jīng)查實,立即刪除!

領支付寶紅包贊助服務器費用

相關文章

  • STM32CubeMX配置-ADC多通道配置(DMA) (STM32G070)

    STM32CubeMX配置-ADC多通道配置(DMA) (STM32G070)

    一、寫在前面 ????????ADC通道采集數(shù)據(jù)的兩種方式: ? ? ? ? 1)ADC輪詢采集數(shù)據(jù)直接放到數(shù)組中; ? ? ? ? 2)采用中斷方式,ADC采集完成進入中斷,中斷關閉ADC采集,取數(shù)據(jù)之后再打開ADC采集。 以下按第一種方式實現(xiàn): 二、ADC多通道配置 1)配置通道及參數(shù) ? ? 如果要控

    2024年02月05日
    瀏覽(24)
  • STM32CubeMX配置ADC采樣(輪詢、中斷、DMA)

    STM32CubeMX配置ADC采樣(輪詢、中斷、DMA)

    STM32CubeMX能夠極大減小STM32外設配置的工作量,因此作者也借助空閑時間對STM32CubeMX相關配置進行了學習,本文介紹如何利用STM32CubeMX配置ADC采樣,記錄了作者學習過程中遇到的問題及解決辦法,使大家少走彎路,并方便以后復習 先選擇所使用的MCU,這里我使用的是STM32F407ZGT系

    2024年02月03日
    瀏覽(29)
  • STM32 cubemx配置DMA+空閑中斷接收不定長數(shù)據(jù)

    STM32 cubemx配置DMA+空閑中斷接收不定長數(shù)據(jù)

    本篇文章給大家講解一下DMA+串口空閑中斷接收串口不定長數(shù)據(jù),之前我們也是講解過串口接收不定長數(shù)據(jù)的,那么本篇文章的話將使用DMA來接收不定長數(shù)據(jù)。 串口空閑中斷是指在串口接收到數(shù)據(jù)后,在數(shù)據(jù)的傳輸結(jié)束之后,在一段連續(xù)的空閑時間內(nèi)沒有接收到新數(shù)據(jù)時觸發(fā)

    2024年02月19日
    瀏覽(27)
  • STM32初學入門筆記(3):STM32CubeMX配置STM32實現(xiàn)多通道ADC+DMA讀取模擬量

    STM32初學入門筆記(3):STM32CubeMX配置STM32實現(xiàn)多通道ADC+DMA讀取模擬量

    模擬信號的讀取是我們在做很多項目是都要用到的,而模擬量的讀取就要依賴于ADC數(shù)模轉(zhuǎn)換器。對于初學者,學習使用ADC可以很大的幫助以后的STM32學習。 目錄 ADC簡介 : DMA簡介:? 工程開始: STM32CubeMX配置區(qū): 配置外部時鐘: 配置調(diào)試: 配置ADC: 配置DMA: 配置串口: 配

    2024年02月09日
    瀏覽(31)
  • STM32CubeMX配置STM32G031多通道ADC + DMA采集(HAL庫開發(fā))

    STM32CubeMX配置STM32G031多通道ADC + DMA采集(HAL庫開發(fā))

    ?時鐘配置HSI主頻配置64M ?勾選打開8個通道的ADC ?使能連續(xù)轉(zhuǎn)換模式 ?添加DMA ?DMA模式選擇循環(huán)模式 ?使能DMA連續(xù)請求 采樣時間配置160.5 轉(zhuǎn)換次數(shù)為8 ?配置好8次轉(zhuǎn)換的順序 ?配置好串口,選擇異步模式 配置好需要的開發(fā)環(huán)境并獲取代碼 ?修改main.c 串口重定向 ?串口重定向

    2024年02月08日
    瀏覽(41)
  • 【STM32】定時器1觸發(fā)ADC多(規(guī)則)通道采樣+DMA(CUBEMX配置)

    【STM32】定時器1觸發(fā)ADC多(規(guī)則)通道采樣+DMA(CUBEMX配置)

    在用單片機做電源控制時不得不提ADC采集,離散系統(tǒng)是有固定的執(zhí)行周期的,所以我們采樣也是要固定時間去采樣。然后就是我希望pwm波(定時器1產(chǎn)出)的頻率與采樣頻率一致。 我下面演示的是G431CBU6,當然其他芯片也大差不差了。 說一下大致流程,TIM1觸發(fā)ADC采樣,然后

    2024年02月01日
    瀏覽(36)
  • STM32CubeMX配置HAL庫實現(xiàn)SPI-DMA的遞歸調(diào)用

    STM32CubeMX配置HAL庫實現(xiàn)SPI-DMA的遞歸調(diào)用

    核心: STM32F407ZET6?? 外設ADC: ADS1258? ?數(shù)量:3個? ?※ 核心與3個ADC使用SPI總線 “一主多從” 方式連接,PCB布線的方式與下圖一致。 ※ 在電路板上STM32與三個ADS1258在同一直線上分布,STM32在一端,三個ADC依次排布。 ※ 離STM32最遠ADC的DRDY硬件管腳與STM32的EXTI line4 interrupt連接

    2024年02月15日
    瀏覽(39)
  • STM32CubeMx配置ADC(多通道采集+DMA讀取數(shù)據(jù))(HAL庫開發(fā))

    STM32CubeMx配置ADC(多通道采集+DMA讀取數(shù)據(jù))(HAL庫開發(fā))

    目錄 1、函數(shù)配置過程(這是標準庫配置過程): 2、STM32CubeMx配置過程 ?3、main函數(shù)源文件 采集5路ADC數(shù)據(jù),并用串口printf()函數(shù)打印出來。 實驗現(xiàn)象:? ADC轉(zhuǎn)換的初始條件: 1、使能 2、觸發(fā)源條件完成(這個需要自己配置)利用:HAL_ADC_Start_DMA()函數(shù); ADC中HAL開發(fā)優(yōu)勢就是,

    2023年04月08日
    瀏覽(27)
  • 【STM32】HAL庫 STM32CubeMX——DMA (串口DMA發(fā)送接收)

    【STM32】HAL庫 STM32CubeMX——DMA (串口DMA發(fā)送接收)

    軟件: STM32CubeMX KEIL5 mcuisp 串口通信助手 硬件: STM32F103C8Tx 杜邦線,面包板,USB轉(zhuǎn)TTL DMA,全稱Direct Memory Access,即直接存儲器訪問。 DMA傳輸將數(shù)據(jù)從一個地址空間復制到另一個地址空間,提供在外設和存儲器之間或者存儲器和存儲器之間的高速數(shù)據(jù)傳輸。 我們知道系統(tǒng)的運

    2024年02月12日
    瀏覽(24)
  • 【STM32筆記】STM32的串口數(shù)據(jù)收發(fā)基礎(四)(USART DMA模式)

    【STM32筆記】STM32的串口數(shù)據(jù)收發(fā)基礎(四)(USART DMA模式)

    ? ?? 在STM32中編寫串口通信數(shù)據(jù)收發(fā)有三種方式: 輪詢模式 (阻塞方式), 中斷模式 (非阻塞方式)以及 DMA模式 。 ? ?? 打開STM32CubeMX,前部分配置流程如串口數(shù)據(jù)收發(fā)基礎(三)節(jié)里一樣。配置好USART1的基本參數(shù),開啟定時器中斷后,接下來就要開啟USART1的DMA。

    2024年02月03日
    瀏覽(17)

覺得文章有用就打賞一下文章作者

支付寶掃一掃打賞

博客贊助

微信掃一掃打賞

請作者喝杯咖啡吧~博客贊助

支付寶掃一掃領取紅包,優(yōu)惠每天領

二維碼1

領取紅包

二維碼2

領紅包