历史上的今天
返回首页

历史上的今天

今天是:2024年09月05日(星期四)

正在发生

2019年09月05日 | STM32串口通信USART(二)---DMA方式

2019-09-05 来源:eefocus

刚接触到DMA的时候,一头雾水,只知道方便、快捷,但不知道该怎么使用,后来弄明白原理之后就轻松了很多,但理解的还不是很透,所以希望把自己的理解写出来,和大家分享一下!


形象的说,DMA就像一个快递中转站,负责把数据从始发地搬到目的地,只要他负责的仓库有货,他就开始搬运,没货就等着,除非你把它关了。就像机器人搬东西一样,首先要告诉它从哪搬,搬到哪?东西有多大?需要搬几趟?需要搬运的东西是不是都在一起?搬完后是不是扔在那就行了,还是要放好?


到芯片里,数据就是货物,把数据从一个地方移到另一个地方。你只要告诉它怎么移到就行了,就像控制一个机器人一样。并不是多有的外设都能有机会使用DMA通道,而且,一条通道上被外设使用后,通道上的其他外设就不能使用了。那么,哪些外设可以使用DMA呢?


比方说:现在我需要使用串口发送,那么只能选择通道4,如果接收就使用通道5。


(这里只拿DMA1举例,DMA2原理相同)


在知道大概的原理之后,我们来看一下DMA的一些寄存器。


 1):中断状态寄存器                                                                                                                                                                           

 2):中断标志清除寄存器


 3):通道配置寄存器


注:当通道配置为非循环模式时,传输结束后(即传输计数变为0)将不再产生DMA操作。要开始新的


DMA传输,需要在关闭DMA通道的情况下,在DMACNDTRx寄存器中重新写入传输数目



 4):接下来的几个寄存器配置传输数据的次数、数据源地址,数据存放地址。


/**********中断函数**************/


/*这里只提供通道4发送完成中断


*/


void DMA1_Channel4_IRQHandler(void){   if(DMA_GetITStatus(DMA1_FLAG_TC4)==SET)    {       DMA_ClearFlag(DMA1_FLAG_TC4);       DMA_Cmd(DMA1_Channel4, DISABLE); //在非循环模式下,若 想再次填写传输次数,必须先关闭通道     DMA1_Channel->CNDTR =  10;       DMA_Cmd(DMA1_Channel4, ENABLE); 


}


推荐阅读

史海拾趣

ENOCEAN公司的发展小趣事

作为一家以技术创新为核心竞争力的公司,EnOcean始终致力于研发更先进、更高效的无线无源传输技术。通过不断投入研发资源,EnOcean在能量转换效率、数据传输速率等方面取得了显著进展。同时,公司还积极探索新的应用领域和市场机会,以保持其在电子行业中的领先地位。

以上五个故事概述了EnOcean公司在电子行业中发展的主要历程和关键事件。通过这些故事,我们可以看到EnOcean凭借其在无线无源传输技术方面的持续创新和卓越性能,成功在全球市场上赢得了广泛认可和应用。

CLAIREX公司的发展小趣事

随着订单的不断增加,Clairex意识到必须提升生产能力以满足市场需求。于是,公司投入大量资金引进了先进的生产设备和技术,并对生产线进行了优化改造。同时,Clairex还建立了严格的质量控制体系,从原材料采购到产品出厂的每一个环节都进行严格把关。这些措施确保了Clairex产品的质量和稳定性,赢得了客户的信任和好评。

Banner Engineering公司的发展小趣事

Banner Engineering公司一直将质量管理作为企业发展的核心。公司建立了完善的质量管理体系,从原材料采购、生产制造到产品出厂,每一个环节都进行严格的质量控制。同时,公司还注重持续改进,通过不断优化生产流程、提高生产效率、降低生产成本等方式,不断提升产品质量和企业竞争力。这些努力使公司的产品在市场上获得了良好的口碑和信誉。

DRI Relays Inc公司的发展小趣事

随着电子技术的不断进步,市场对继电器产品的要求也越来越高。DRI Relays Inc公司意识到,只有不断创新才能保持市场竞争力。为此,公司投入大量资金和资源,组建了一支由行业专家组成的研发团队,专注于新技术和新产品的研发。经过数年的努力,公司成功开发出一系列具有自主知识产权的高性能继电器产品,这些产品在市场上取得了巨大的成功,为公司带来了可观的利润。

无锡友达公司的发展小趣事

面对电子行业的快速发展和智能化趋势,无锡友达积极响应,加快智能化转型和升级。公司不仅在产品设计和生产上引入智能化技术,还通过建立智能化管理系统,提升企业的运营效率和产品质量。此外,无锡友达还积极参与各类行业展会和交流活动,与业界同行共同探讨智能化转型的未来趋势。

Dolphin Interconnect Solutions Asa公司的发展小趣事

Dolphin Interconnect Solutions ASA深知创新是企业发展的根本动力。因此,公司不断投入研发资源,鼓励员工进行创新实践。同时,Dolphin还注重人才培养和引进,建立了一支高素质、专业化的技术团队。这些人才为公司的发展提供了源源不断的创新动力。

问答坊 | AI 解惑

1602LCD液晶秒表.rar

1602LCD液晶秒表.rar…

查看全部问答>

警用概念自行车

在当今随着汽车的普及,自行车正在慢慢退出,但是,在我们的城市中总有些地方汽车是去不了的,比如狭小的胡同,而摩托车也显得有些不方便,这时候,如果能有个自行车也是不错的,这款警用自行车就是基于这样的考虑诞生的,它涵盖了警察所常用的一些 ...…

查看全部问答>

minicom不能显示开发板启动信息

我用的是s3c2410主机是linux操作系统,用minicom时,启动开发板则不能显示任何信息, minicom配置如下: A-Serial Device :dev/ttyS0 B-Lockfile Location :/var/lock E-Bps/Par/Bits      :115200 8N1 F-Hardware Flow ...…

查看全部问答>

调查一下用的最多的单片机

说一下自己都用了哪些型号的单片机,主要是8位和16位的。 来看看哪种单片机用的比较多。 我在学校主要做过STC51的单片机和MSP430(TI)的16位的单片机。 目前主要用飞思卡尔的8位DZ60做CAN总线。…

查看全部问答>

征求数公里范围内无线组网方案,期待您的回复!

需求: 数公里范围内无线组网,需要传输的数据量并不大,只是一些环境监测的数据。 可以是C/S架构,所有终端向服务器汇报,终端之间可以不联网。 终端需要进入区域能及时发现,及时传输数据。 终端脱离区域也能汇报。 多谢您的指教! …

查看全部问答>

怎么完成单片机与PC机通信?

本人想做一个单片机与PC机通信操作的实验,看过资料,但有些地方不明白,请大家帮忙:   它们的通信是要通过MAX232吗?MAX232还用不用接8250,然后再接九针插头?它们的电路图应该怎么接?   书上还说要对8250编 ...…

查看全部问答>

键盘扫描,有点疑惑

4×4阵列键盘扫描判断是否有键按下,先对键盘所在端口写0x0f,再回读,不为0x0f,表示有键按下在程序里我是这样处理的先配制成开漏输出,写0x0f,再配制成浮空输入,读端口,发现每次读到的都是0xff.是不是在第二次配制成输入的时候,IO寄存器的 ...…

查看全部问答>

万利EK-STM32F10E配套的例程所用的固件库是什么版本啊?

                                 万利EK-STM32F10E配套的例程所用的固件库是什么版本啊?…

查看全部问答>

LM3S811驱动的安装

LM3S811驱动的安装         我以前装了8962的驱动,这次直接查上811上去就好使,不知道大家的是不是也是一样的,下载程序没问题。         如果你没有安装过LM3S系 ...…

查看全部问答>

菜鸟求救

fpga设计一个移位函数,输入是一个32位的数DATA,和一个左移、右移的控制信号shit_contr,其输出是一个32位的数 设计一个连加函数,输入的是起始数值和终止数值,输入和输出的数据位宽可由参考数化设定…

查看全部问答>