博客
关于我
强烈建议你试试无所不能的chatGPT,快点击我
【iCore4 双核心板_ARM】例程十一:DMA实验——存储器到存储器的传输
阅读量:4677 次
发布时间:2019-06-09

本文共 2567 字,大约阅读时间需要 8 分钟。

实验原理:

  DAM(直接存储器访问)传输不需要占用CPU,可以在存储器至存储器实现高速的数据

传输。本实验采用DAM2控制器的数据流0,选用通道0进行数据传输。通过LED的颜色来

判断传输是否成功。

实验现象:

  实验成功蓝色LED灯闪烁,实验失败红色LED灯闪烁。

核心代码:

int main(void){  /* USER CODE BEGIN 1 */    int i;  /* USER CODE END 1 */  /* MCU Configuration----------------------------------------------------------*/  /* Reset of all peripherals, Initializes the Flash interface and the Systick. */  HAL_Init();  /* USER CODE BEGIN Init */  /* USER CODE END Init */  /* Configure the system clock */  SystemClock_Config();  /* USER CODE BEGIN SysInit */  /* USER CODE END SysInit */  /* Initialize all configured peripherals */  MX_GPIO_Init();  /* USER CODE BEGIN 2 */    dma.initialize();    //²âÊÔDMA£¬²âÊԳɹ¦À¶µÆÉÁ˸£¬²âÊÔʧ°Ü£¬ºìµÆÉÁ˸  /* Configure DMA request hdma_memtomem_dma2_stream0 on DMA2_Stream0 */  hdma_memtomem_dma2_stream0.Instance = DMA2_Stream0;  hdma_memtomem_dma2_stream0.Init.Channel = DMA_CHANNEL_0;  hdma_memtomem_dma2_stream0.Init.Direction = DMA_MEMORY_TO_MEMORY;  hdma_memtomem_dma2_stream0.Init.PeriphInc = DMA_PINC_ENABLE;  hdma_memtomem_dma2_stream0.Init.MemInc = DMA_MINC_ENABLE;  hdma_memtomem_dma2_stream0.Init.PeriphDataAlignment = DMA_PDATAALIGN_WORD;  hdma_memtomem_dma2_stream0.Init.MemDataAlignment = DMA_PDATAALIGN_WORD;  hdma_memtomem_dma2_stream0.Init.Mode = DMA_NORMAL;  hdma_memtomem_dma2_stream0.Init.Priority = DMA_PRIORITY_HIGH;  hdma_memtomem_dma2_stream0.Init.FIFOMode = DMA_FIFOMODE_ENABLE;  hdma_memtomem_dma2_stream0.Init.FIFOThreshold = DMA_FIFO_THRESHOLD_FULL;  hdma_memtomem_dma2_stream0.Init.MemBurst = DMA_MBURST_SINGLE;  hdma_memtomem_dma2_stream0.Init.PeriphBurst = DMA_PBURST_SINGLE;  if(HAL_DMA_Init(&hdma_memtomem_dma2_stream0) != HAL_OK)  {    while(1);  }        HAL_DMA_Start(&hdma_memtomem_dma2_stream0,(unsigned long int)src_buffer,(unsigned long int)dst_buffer,(unsigned long int)BUFFER_SIZE);        while(__HAL_DMA_GET_FLAG(&hdma_memtomem_dma2_stream0,DMA_FLAG_TCIF0_4) == SET);    for(i = 0;i < BUFFER_SIZE;i++){        if(dst_buffer[i] != src_buffer[i]){            //²âÊÔʧ°Ü            while(1){                    HAL_Delay(500);                    LED_RED_ON;                    HAL_Delay(500);                    LED_RED_OFF;            }        }    }  /* USER CODE END 2 */  /* Infinite loop */  /* USER CODE BEGIN WHILE */    //²âÊԳɹ¦  while (1)  {  /* USER CODE END WHILE */  /* USER CODE BEGIN 3 */        HAL_Delay(500);        LED_BLUE_ON;        HAL_Delay(500);        LED_BLUE_OFF;      }  /* USER CODE END 3 */}

源代码下载链接:

链接: 密码:yvxw

iCore4链接:

 

转载于:https://www.cnblogs.com/xiaomagee/p/7411301.html

你可能感兴趣的文章
python会缓存小的整数和短小的字符
查看>>
格网与四叉树索引
查看>>
Linux网卡配置文件路径是什么?要使服务器上外网,必须满足的条件有哪些?需要配置什么?...
查看>>
多张照片拍摄、图片浏览
查看>>
html(5) css
查看>>
Azure Web连接到Azure MySql Db
查看>>
《麻辣江湖》即将上线!
查看>>
Mybatis中mapper.xml文件判断语句中的单双引号问题
查看>>
frameset和frame
查看>>
饥饿的小易(规律,同余大数)
查看>>
ats透明代理
查看>>
PHP 小代码
查看>>
2016/03/16 codes
查看>>
2018年7月21日工作总结
查看>>
Linux shell 命令判断执行语法 ; , && , ||
查看>>
vim代码格式化插件clang-format
查看>>
What does the dot after dollar sign mean in jQuery when declaring variables?
查看>>
windows registry
查看>>
H5 百度一下,你就知道
查看>>
jquery 动画总结(主要指效果函数)
查看>>