娇小w搡bbbb搡bbb,《第一次の人妻》,中国成熟妇女毛茸茸,边啃奶头边躁狠狠躁视频免费观看

17.DMA-2440

發(fā)布者:和諧的24號最新更新時間:2024-10-31 來源: cnblogs關(guān)鍵字:DMA 手機(jī)看文章 掃描二維碼
隨時隨地手機(jī)看文章

首先在前面的實(shí)例中,在dev文件夾下增加dma.c文件,然后把它加入到該目錄的Makefile里面:

這樣就框架就好了,接下來打開dma.c來實(shí)現(xiàn):

首先打開2440的芯片手冊:

我們要操作的是串口0,對應(yīng)的是通道0:

對應(yīng)的源寄存器

對應(yīng)的控制寄存器:

該寄存器只有兩個位:

可以看到DMA控制寄存器的[1]位是絕對用的是AHB,還是APB總線。這是從第一章的原理圖:

可以看到內(nèi)存用的是AHB總線。

所以源地址的源寄存器應(yīng)該被設(shè)置為:

目的地址:

目的地址的控制寄存器:

目的寄存器的控制寄存器有三位:

[2]位是控制中斷產(chǎn)生的時機(jī),這里選擇的是默認(rèn),就是設(shè)置為0,當(dāng)計數(shù)到0的時候產(chǎn)生中斷。

[1]位是選擇是AHB或者APB去存放位置,這里是串口,是APB:[1]=1.

[0]位是控制在數(shù)據(jù)傳輸?shù)倪^程中,目的地址是否需要變化。這是就一個串口接收數(shù)據(jù),所以地址不用變化,所以[0]=1。

 

上面是DMA發(fā)送和接受的寄存器設(shè)置,還有一個DMA控制寄存器的設(shè)置:

這里是DCON0寄存器的[26:24]:

是設(shè)置DMA源的,這是使用的是UART0,所以[26:24]=001。

[23]位是表示DMA源是軟件還是硬件,這是我們是串口,是硬件,所以是1:

[22]位控制的是,當(dāng)你發(fā)送完數(shù)據(jù)后是否重新發(fā)送,這里是不用重復(fù)發(fā)送的,所以設(shè)置1:

TC[19:0]位是用來告訴DMA發(fā)送數(shù)據(jù)的大小,DMA才知道啥時候結(jié)束。上面Hello FORFISH的長度為13,所以:

最終是:

到這里DMA的control寄存器的設(shè)置就結(jié)束了。

最后的函數(shù):

該函數(shù)就設(shè)置好了DMA控制器,接下來就是要設(shè)置打開DMA,當(dāng)DMA打開之后就可以進(jìn)行數(shù)據(jù)傳輸了。

 

這里打開DMA只需要將DMASKTRIG0寄存器的[1]位設(shè)置為1即可:

涉及的寄存器列表:

注意:最后一個UTXH0是要該寄存器的地址,而不是寄存器的值。定義的時候注意。

在main.c里調(diào)用DMA的操作函數(shù):

修改好了之后make:

燒寫到開發(fā)板,NandFlash啟動:

可以看到,通用DMA的方式,把字符串傳遞到了串口了,實(shí)現(xiàn)DMA的機(jī)制。


關(guān)鍵字:DMA 引用地址:17.DMA-2440

上一篇:18.DMA-6410
下一篇:16.6410DMA簡述

推薦閱讀最新更新時間:2025-06-07 23:47

2440 DMA寄存器總結(jié)
2440 DMA寄存器: 1.DISRCn(DMA initial source c):始端數(shù)據(jù)基地址。 2.DISRCCn(DMA initial source control register):始端總線類型(系統(tǒng)總線AHB or 外圍總線 APB)和地址類型(increment or fixed)。 3.DIDSTn(DMA initial destination register):終端數(shù)據(jù)基地址。 4.DIDSTCn(DMA initial destination control register):中斷產(chǎn)生時刻,終端總線類型(系統(tǒng)總線AHB or 外圍總線 APB)和地址類型(increment or
[單片機(jī)]
STM32的DMA串口直通
搞這個,起因呢,公司產(chǎn)品里ZigBee模塊固件版本不對,一大批產(chǎn)品需要二次升級。 需要升級的ZigBee模塊是直接與stm32相連的,沒有引出升級口,所以得搞個串口直通程序,通過232轉(zhuǎn)MCU再轉(zhuǎn)ZigBee,來進(jìn)行升級。 一開始直接中斷互通,結(jié)果呢,通倒是可以通,一升級固件就不行了,大概是因?yàn)閿?shù)據(jù)量較大吧。 所以用了DMA,之前也沒用過DMA,就慢慢學(xué)慢慢模仿著改唄。 這里要涉及到一個點(diǎn),DMA的外設(shè)到外設(shè),經(jīng)常寫的是,DMA只有外設(shè)到內(nèi)存、內(nèi)存到外設(shè)、內(nèi)存到內(nèi)存三種模式。 實(shí)際上,DMA是可以外設(shè)直接到外設(shè)的,而且用法非常非常簡單,直接設(shè)置成外設(shè)到內(nèi)存或內(nèi)存到外設(shè)模式,然后把內(nèi)存直接改成外設(shè)的地址,就可以了。
[單片機(jī)]
STM32的<font color='red'>DMA</font>串口直通
STM32CubeMX | 42 - 使用DMA2D加速顯存數(shù)據(jù)傳輸
一、使用CPU搬運(yùn)數(shù)據(jù)到顯存 在上一篇文章中講述了如何配置 LTDC 驅(qū)動 RGB 屏幕: STM32CubeMX | 41-使用LTDC驅(qū)動TFT-LCD屏幕(RGB屏)。 本節(jié)中我們接著上一節(jié)的實(shí)驗(yàn),講述如何使用 DMA2D 實(shí)現(xiàn)打點(diǎn)、畫線、填充等函數(shù),只需要單層全屏即可,修改LTDC層配置如下: 1. 編寫lcd驅(qū)動頭文件 創(chuàng)建lcd_rgb_ltdc_drv.h文件,存放關(guān)于操作LCD屏幕的一些宏定義配置和函數(shù)定義: #ifndef _LCD_RGB_LTDC_DRV_H_ #define _LCD_RGB_LTDC_DRV_H_ #include ltdc.h /** * @brief Window
[單片機(jī)]
STM32CubeMX | 42 - 使用<font color='red'>DMA</font>2D加速顯存數(shù)據(jù)傳輸
【STM32】HAL庫 STM32CubeMX教程十一---DMA (串口DMA發(fā)送接收)
前言: 本系列教程將 對應(yīng)外設(shè)原理,HAL庫與STM32CubeMX結(jié)合在一起講解,使您可以更快速的學(xué)會各個模塊的使用 所用工具: 1、芯片: STM32F407ZET6/ STM32F103ZET6 2、STM32CubeMx軟件 3、IDE: MDK-Keil軟件 4、STM32F1xx/STM32F4xxHAL庫 知識概括: 通過本篇博客您將學(xué)到: DMA工作原理 STM32CubeMX創(chuàng)建DMA例程 HAL庫定時器DMA函數(shù)庫 注意:關(guān)于cubemx的DMA配置,在DMA原理介紹中全部都有所講解,如果有哪里不懂,請仔細(xì)閱讀原理詳解部分。 DMA的基本介紹 什么是DMA (DM
[單片機(jī)]
【STM32】HAL庫 STM32CubeMX教程十一---<font color='red'>DMA</font> (串口<font color='red'>DMA</font>發(fā)送接收)
Stm32F407 SPI1 全雙工DMA 收發(fā)數(shù)據(jù)
最近被 ESP8266 的設(shè)計整崩潰了, 一個半的 串口 真的 坑。 為了讓 我畢設(shè)中的 ESP8266 和 Stm32F4 單片機(jī)進(jìn)行數(shù)據(jù)傳輸,我需要找到一種除了 串口意外的 通訊方式(吐槽一下,要是用串口的話 真的太簡單啊) 最終我盯上了 SPI 的協(xié)議 所以就有這個博客。 這是我的 一個試驗(yàn)程序。 聲明一下 這個博客中的主要代碼不是我寫的,是我在網(wǎng)上找到的 原作者是 在這里向原作者致敬,如果您不希望我寫這個博客 那么請聯(lián)系我。 我這里只是分享一下代碼的思路(我的代碼做了一定的自己的修改) 這是GPIO的 初始化部分,其中的PA4是NSS 引腳 這里我使用的是軟件NSS所以就單獨(dú)配置一下輸出 手冊中的引腳復(fù)用
[單片機(jī)]
Stm32F407 SPI1 全雙工<font color='red'>DMA</font> 收發(fā)數(shù)據(jù)
stm32 adc dma多通道采樣 數(shù)據(jù)錯位 的解決方法
解決方法:不要采用連續(xù)轉(zhuǎn)換模式 ADC_InitStructure.ADC_ContinuousConvMode = DISABLE; 需要時才實(shí)施轉(zhuǎn)換 ADC_SoftwareStartConvCmd(ADC1, ENABLE); 轉(zhuǎn)換后取消轉(zhuǎn)換 ADC_SoftwareStartConvCmd(ADC1, DISABLE); 經(jīng)過測試能夠解決stm32 adc dma多通道采樣 數(shù)據(jù)錯位
[單片機(jī)]
stm32 DAC+DMA 輸出100K正弦波杠杠的!!!
之前想用stm32的DAC輸出正弦波,才用的方案是在死循環(huán)里面用for循環(huán)輸出36點(diǎn)的電壓值模擬成一個完整的正弦波。發(fā)現(xiàn)最多只能輸出個20KHz的波形,在示波器下面能夠看到明顯的梯度。后來用DMA+ADC的模式發(fā)現(xiàn)可以上100K(不過頻率有點(diǎn)飄),下面吧代碼貼出來 void DAC_DMA_Configuration(void) { DAC_InitTypeDef DAC_InitStructure; DMA_InitTypeDef DMA_InitStructure; TIM_TimeBaseInitTypeDef TIM_TimeBaseStructure; GPIO_InitTypeDef GPIO
[單片機(jī)]
DMA直接驅(qū)動GPIO,實(shí)現(xiàn)GPIO最高輸出速率
STM32F303芯片,72M的主頻,GPIO的達(dá)到了14.4M的翻轉(zhuǎn)速率 再來上代碼: RCC_AHBPeriphClockCmd(RCC_AHBPeriph_GPIOC, ENABLE); GPIOC- MODER |= 0x55555555; GPIOC- OSPEEDR |= 0xFFFFFFF; GPIOC- PUPDR |= 0x55555555; u32 Gpio_data = {0x0000FFFF,0xFFFF0000,0x0000FFFF,0xFFFF0000}; DMA_InitTypeDef DMA_InitStructure; TIM_TimeBaseInitTypeDef TIM_TimeB
[單片機(jī)]
小廣播
設(shè)計資源 培訓(xùn) 開發(fā)板 精華推薦

最新單片機(jī)文章

 
EEWorld訂閱號

 
EEWorld服務(wù)號

 
汽車開發(fā)圈

 
機(jī)器人開發(fā)圈

電子工程世界版權(quán)所有 京ICP證060456號 京ICP備10001474號-1 電信業(yè)務(wù)審批[2006]字第258號函 京公網(wǎng)安備 11010802033920號 Copyright ? 2005-2025 EEWORLD.com.cn, Inc. All rights reserved
主站蜘蛛池模板: 根河市| 高尔夫| 兴业县| 五大连池市| 济宁市| 德州市| 红桥区| 永春县| 民权县| 文昌市| 临沧市| 洪泽县| 长兴县| 永安市| 富宁县| 瑞丽市| 华蓥市| 许昌市| 宝鸡市| 杨浦区| 宾川县| 凤翔县| 集安市| 浏阳市| 上饶市| 龙陵县| 石景山区| 澎湖县| 富民县| 凤城市| 太白县| 通道| 武山县| 余庆县| 闵行区| 容城县| 西林县| 松滋市| 柳林县| 田林县| 鄯善县|