DMA带中断的内存到内存传输

发布者:GoldenSerenity最新更新时间:2024-05-06 来源: elecfans关键字:DMA  中断  内存 手机看文章 扫描二维码
随时随地手机看文章

  要使用中断配置 DMA,请按照内存到内存模式部分中详述的步骤进行操作。

  在System Core 》 NVIC中启用DMA1 Channel 1 Global Interrupt如下图所示:

DMA中断.png

 

  现在按以下键生成代码:Ctrl + S

  4.1 HAL 库 DMA 与 IT 流程↑

  DMA 初始化在main.c中生成。

  HAL_DMA_Start_IT:开始DMA缓冲区传输

  DMA1_Channel1_IRQHandler 在stm32f4xx_it.c中生成:它指示 DMA 过程是半/完成还是检测到错误。

  HAL_DMA_IRQHandler定义在stm32f4xx_hal_dma.c:处理中断信息。

  DMA_XferCpltCallback:数据正确传输完成回调函数。

  DMA_XferErrorCallback:检测到错误错误回调函数。

  

 

DMA 工作流程与 IT.png

 

  4.2 IT 配置的 DMA M2M↑

  我们将使用与 DMA M2M 配置中相同的代码。

  在标签/* USER CODE BEGIN 0 */和/* USER CODE END 0 */之间插入您的代码

  /* 用户代码开始 0 */

  void XferCpltCallback ( DMA_HandleTypeDef * hdma );

  uint8_t Buffer_Src [] = { 0 , 1 , 2 , 3 , 4 , 5 , 6 , 7 , 8 , 9 };

  uint8_t Buffer_Dest [ 10 ];

  /* 用户代码从 0 开始 */

 

  在标签/* USER CODE BEGIN 4 */和/* USER CODE END 4 */之间插入您的代码

  /* 用户代码开始 4 */

  void XferCpltCallback ( DMA_HandleTypeDef * hdma )

  {

  __NOP (); //仅当传输成功时才到达线路。在此处切换断点

  }

  /* USER CODE END 4 */

  在使用中断启动 DMA 之前,我们需要将回调设置为 DMA 结构。

  然后,可以使用 HAL_DMA_Start_IT 开始 DMA 传输。

  在标签/* USER CODE BEGIN 2 */和/* USER CODE END 2 */之间插入您的代码

  /* 用户代码开始 2 */

  hdma_memtomem_dma1_Channel1 。 XferCpltCallback =& XferCpltCallback ;

  HAL_DMA_Start_IT ( & hdma_memtomem_dma1_Channel1 ,( uint32_t ) Buffer_Src , ( uint32_t ) Buffer_Dest , 10 );

  /* 用户代码结束 2 */

  4.3编译烧录↑

  点击调试一步步运行

调试.png

  点击Resume继续执行

恢复按钮.png

  如果您在回调函数中切换断点,执行应该会自动停止。将Buffer_Src和Buffer_Dest

  添加到Expressions中,在 STM32CubeIDE 的右侧,以监控它们的值。源数据已传输到目标缓冲区。

  

 

DMA nucleo dma buffers.png


关键字:DMA  中断  内存 引用地址:DMA带中断的内存到内存传输

上一篇:详解Cortex-M位带操作
下一篇:工程师笔记|一个地址未对齐引起的 HardFault 异常

推荐阅读最新更新时间:2024-11-12 22:36

MSP430F5529的IO口管脚的中断学习笔记
非常简单的一个程序,在F5529的开发板上用按键的IO中断控制LED的亮灭: #include int main(void) { WDTCTL = WDTPW + WDTHOLD; // Stop watchdog timer P1DIR |= BIT0; //将LED1对应的IO口P1.0设置为输出 P1OUT &= ~BIT0; //初始化该灯设置为灭 P1DIR &= ~BIT7; //将按键1对应的IO口P1.7设置为输入 P1IFG &= ~BIT7; //初始化清空中断标志位 P1IE |= BIT7; //P1.7中断使能 P1IES |= BIT7; //下降沿产生中断
[单片机]
什么样的内存能够满足AI芯片的算力
经历了几年的高速发展之后,人工智能(简称AI)不再是新鲜的名词,它已经作为一个重要的生产工具,被引入到我们工作和生活的多个领域。但在AI爆发的背后,随之而来的是对AI算力需求的暴增。 据OpenAI的一份报告显示,从2012年到2019年,人工智能训练集增长了30万倍,每3.43个月翻一番,但如果是以摩尔定律的速度,只会有 12 倍的增长。为了满足AI算力的需求,从业人员通过设计专用的AI芯片、重配置硬件和算法创新等多方面入手来达成目标。 AI算力需求增长 然而在此过程中,我们除了看到AI对算力的要求以外,内存带宽也是限制AI芯片发展的另一个关键要素。这就需要从传统的冯诺依曼架构谈起。作为
[嵌入式]
什么样的<font color='red'>内存</font>能够满足AI芯片的算力
DMA操作驱动
驱动源码: #include linux/module.h #include linux/kernel.h #include linux/fs.h #include linux/init.h #include linux/delay.h #include linux/irq.h #include asm/uaccess.h #include asm/irq.h #include asm/io.h #include asm/arch/regs-gpio.h #include asm/hardware.h #include linux/poll.h #include linux/dma-mapping.h
[单片机]
红米4跑分泄露:高通骁龙625处理器+2GB内存
    又是红米4的消息,今天在GeekBench上出现了一款型号为Xiaomi mido的设备,从跑分和配置来看都很有可能就是红米4。     根据资料来看,该机的单核跑分为806分/842分,多核跑分为3608分/3763分,处理器是基于14nm工艺的骁龙625(主频2GHz),运行内存是2G。   此前已经有疑似红米4的谍照泄露,红米4还会提供32GB起步的存储,内置4100mAh容量电池(支持快充),采用金属注塑机身设计,搭载指纹识别,屏幕为5寸1080p。   价格方面,据说是699起步,不过要是按照今年小米的定价策略的话,红米4依然主打性价比。
[手机便携]
台积电三星英特尔激战!内存市场已前进下一个时代
  《韩国经济日报》报导,传三星电子 (Samsung Electronics) 已在磁阻式随机存取内存 (MRAM) 取得重大进展,市场估计在 5 月 24 日的一场晶圆厂商论坛上,三星电子将会发布该公司所研发的 MRAM 内存。下面就随嵌入式小编一起来了解一下相关内容吧。   由于标准型内存 DRAM、NAND Flash 等微缩制程已逼近极限,目前全球半导体巨擘皆正大举发展次世代内存「磁电阻式随机存取内存 (MRAM)」,与含 3D XPoint 技术的「相变化内存 (PRAM)」及「电阻式动态随机存取内存 (RRAM)」。   上述三类次世代内存皆具有非挥发性内存技术,兼具高效能及低耗电之特性,估计这类次世代内存处理速度
[嵌入式]
stm32 RAM分配及占有
一个小的项目,在测试时间和产品量稍微大一些之后,出现了一些莫名其妙的非逻辑错误的Bug(最头疼的是不能每次都能复制出来)。经过修改后,最近一个月的测试都没有出现。本人在这里得到了原子哥和其他朋友的很多帮助,也把自己的一些经验分享给各位,也欢迎大家指正。 1. 程序偶尔会出现一些Bug,经过output串口信息发现一些堆栈的临时变量被莫名其妙的修改。 stm32103rbt6的内存是20K,算比较小了,看到程序出错的那个函数申请了很多零时变量,也需要访问很多全局变量。猜想是内存被其他操作更改所致。 解决ram被使用过多的一个方法是尽量少用全局变量,能用const就用一定用const变量,因为这样会放在flash,而不是ram. 我的
[单片机]
中断的单片机红绿灯
带中断的单片机红绿灯源程序: #include reg51.h #include intrins.h #define uchar unsigned char sbit c=P1^1; sbit d=P1^4; uchar led ={0x3f,0x06,0x5b,0x4f,0x66,0x6d,0x7d,0x07,0x7f,0x6f};//0到9数码管显示 void delay1(uchar j)//延时若干ms {uchar i; while(j--) {for(i=0;i 125;i++) for(i=0;i 125;i++);} } void delay(uchar i) //延时1秒钟 { unsigned c
[单片机]
带<font color='red'>中断</font>的单片机红绿灯
单片机数据存储器RAM的扩展实例
RAM是用来存放各种数据的,MCS-51系列8位单片机内部有128 B RAM存储器,CPU对内部RAM具有丰富的操作指令。但是,当单片机用于实时数据采集或处理大批量数据时,仅靠片内提供的RAM是远远不够的。此时,我们可以利用单片机的扩展功能,扩展外部数据存储器。 常用的外部数据存储器有静态RAM(Static Random Access Memory—SRAM)和动态RAM(Dynamic Random Access Memory—DRAM)两种。前者读/写速度高,一般都是8位宽度,易于扩展,且大多数与相同容量的EPROM引脚兼容,有利于印刷板电路设计,使用方便;缺点是集成度低,成本高,功耗大。后者集成度高,成本低,功耗相对较
[单片机]
单片机数据存储器<font color='red'>RAM</font>的扩展实例
小广播
设计资源 培训 开发板 精华推荐

最新单片机文章
何立民专栏 单片机及嵌入式宝典

北京航空航天大学教授,20余年来致力于单片机与嵌入式系统推广工作。

更多往期活动

 
EEWorld订阅号

 
EEWorld服务号

 
汽车开发圈

电子工程世界版权所有 京ICP证060456号 京ICP备10001474号-1 电信业务审批[2006]字第258号函 京公网安备 11010802033920号 Copyright © 2005-2024 EEWORLD.com.cn, Inc. All rights reserved