【iCore1S 双核心板_ARM】例程十二:DMA实验——存储器到存储器的传输

实验原理:

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

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

判断传输是否成功。

实验现象:

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

核心代码:

int main(void)
{

  /* USER CODE BEGIN 1 */
  HAL_StatusTypeDef har_status;

  /* USER CODE END 1 */

  /* MCU Configuration----------------------------------------------------------*/

  /* Reset of all peripherals, Initializes the Flash interface and the Systick. */
  HAL_Init();

  /* Configure the system clock */
  SystemClock_Config();

  /* Initialize all configured peripherals */
  MX_GPIO_Init();
  MX_DMA_Init();
  SystemClock_Config();

  /* USER CODE BEGIN 2 */
    
  //²âÊÔDMA£¬²âÊԳɹ¦À¶µÆÉÁ˸£¬²âÊÔʧ°Ü£¬ºìµÆÉÁ˸
  har_status=HAL_DMA_Start(&hdma_memtomem_dma1_channel1,(uint32_t)&SRC_Const_Buffer,(uint32_t)&DST_Buffer,32);
    
  if(har_status==HAL_OK)
  {
    TransferStatus = Buffercmp(SRC_Const_Buffer, DST_Buffer, 32);   // ¼ì²é·¢ËͺͽÓÊÕµÄÊý¾ÝÊÇ·ñÏàµÈ 
    
    if(TransferStatus == SUCCEED)    // Èç¹û½ÓÊպͷ¢Ë͵ÄÊý¾Ý¶¼ÊÇÏàͬµÄ£¬Ôòͨ¹ý 

    {            
            while(1){
                    LED_BLUE_TOGGLE;
                    HAL_Delay(1000);        
            }            
    }
    else                                                      // Èç¹û½ÓÊպͷ¢Ë͵ÄÊý¾Ý²»Í¬£¬Ôò´«Êä³ö´í 

    {
            while(1){
                    LED_RED_TOGGLE;
                    HAL_Delay(1000);        
            }            
    }
  }
  /* USER CODE END 2 */

  /* Infinite loop */
  /* USER CODE BEGIN WHILE */
  while (1)
  {
  /* USER CODE END WHILE */

  /* USER CODE BEGIN 3 */

  }
  /* USER CODE END 3 */

}

源代码下载链接:

链接:http://pan.baidu.com/s/1c6h7rg 密码:hfza

原文地址:https://www.cnblogs.com/xiaomagee/p/7477276.html