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

时间:2021-08-19 22:26:43

实验原理:

  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,); if(har_status==HAL_OK)
{
TransferStatus = Buffercmp(SRC_Const_Buffer, DST_Buffer, ); // ¼ì²é·¢ËͺͽÓÊÕµÄÊý¾ÝÊÇ·ñÏàµÈ if(TransferStatus == SUCCEED) // Èç¹û½ÓÊպͷ¢Ë͵ÄÊý¾Ý¶¼ÊÇÏàͬµÄ£¬Ôòͨ¹ý {
while(){
LED_BLUE_TOGGLE;
HAL_Delay();
}
}
else // Èç¹û½ÓÊպͷ¢Ë͵ÄÊý¾Ý²»Í¬£¬Ôò´«Êä³ö´í {
while(){
LED_RED_TOGGLE;
HAL_Delay();
}
}
}
/* USER CODE END 2 */ /* Infinite loop */
/* USER CODE BEGIN WHILE */
while ()
{
/* USER CODE END WHILE */ /* USER CODE BEGIN 3 */ }
/* USER CODE END 3 */ }

源代码下载链接:

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

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