DMA知识

提示:文章

文章目录

前言

前期疑问:
本文目标:


一、背景

2024年3月26日23:32:43
今天看了DMA存储器到存储器的DMA传输和存储器到外设的DMA实验,在keil仿真可以看到效果。还没有在protues和开发板上实验。先记录下来。

二、

2.1 存储器到存储器

存储器到存储器
代码提交记录:

SHA-1: bea0109310e47971a4869d13784445d9ee96f536
DMA实现存储器到存储器实验

//main.c文件
int main(void)
{	
	//RCC_SYSCLKConfig(RCC_SYSCLKSource_HSI);
	/* LED 端口初始化 */
	LED_GPIO_Config();	 
	//按键初始化函数	
	gpio_init();
	//EXTI按键初始化函数
	bsp_exti_key_gpio_init();
	bsp_exti_key_nvic_init();
	bsp_exti_key_exti_init();
	
	//RCC初始化
	RCC_Init();			
	
	//USART初始化
	InitGPIO();
	InitUsart();		//包含了NVIC中断初始化
	//USART_Config();

	//DMA配置,存储器到存储器
	DMA_Config();
	
	char array[15] = "hello world\r\n";
	while (1)
	{
		//key_process();	
		rcc_led_loop();
		
//		for(int i = 0; i < 15; i++)
//		{
//			sendData(array[i]);
//		}
//		//Delay(1000000);
		printf("hello world\r\n");
		if(getBufferCmpResult())
		{
			printf("result is same!\r\n");
		}
	}
}
//打印信息
led_on();
led_off();
hello world
result is same!
led_on();
led_off();
hello world
result is same!
led_on();
led_off();
hello world
result is same!
led_on();
led_off();
hello world
result is same!
led_on();
led_off();
hello world
result is same!
led_on();
led_off();

2.2 存储器到外设

代码提交:

SHA-1: 8632c414141f7dae6c10e9617b1576f59a09d62e
DMA实现存储器到外设数据发送

//main文件
/**
  * @brief  主函数
  * @param  无  
  * @retval 无
  */
int main(void)
{	
	//RCC_SYSCLKConfig(RCC_SYSCLKSource_HSI);
	/* LED 端口初始化 */
	LED_GPIO_Config();	 
	//按键初始化函数	
	gpio_init();
	//EXTI按键初始化函数
	bsp_exti_key_gpio_init();
	bsp_exti_key_nvic_init();
	bsp_exti_key_exti_init();
	
	//RCC初始化
	RCC_Init();			
	
	//USART初始化
	InitGPIO();
	InitUsart();		//包含了NVIC中断初始化
	//USART_Config();

	//DMA配置,存储器到存储器
	DMA_Config();
	
	/* 配置使用DMA模式 */
    USARTx_DMA_Config();
	
	printf("\r\n USART1 DMA TX 测试 \r\n");
	
	int i = 0;

    /*填充将要发送的数据*/
    for (i=0; i<SENDBUFF_SIZE; i++)
    {
        SendBuff[i]  = 'P';

    }

    /*为演示DMA持续运行而CPU还能处理其它事情,持续使用DMA发送数据,量非常大,
    *长时间运行可能会导致电脑端串口调试助手会卡死,鼠标乱飞的情况,
    *或把DMA配置中的循环模式改为单次模式*/

    /* USART1 向 DMA发出TX请求 */
    USART_DMACmd(USART1, USART_DMAReq_Tx, ENABLE);
	
	char array[15] = "hello world\r\n";
	while (1)
	{
		//key_process();	
		rcc_led_loop();
		
//		for(int i = 0; i < 15; i++)
//		{
//			sendData(array[i]);
//		}
//		//Delay(1000000);
		printf("hello world\r\n");
		if(getBufferCmpResult())
		{
			printf("result is same!\r\n");
		}
	}
}

keil仿真实验效果
在这里插入图片描述

三、

3.1


总结

未完待续

相关推荐

  1. <span style='color:red;'>DMA</span><span style='color:red;'>知识</span>

    DMA知识

    2024-03-27 05:38:03      41 阅读
  2. DMADMAC

    2024-03-27 05:38:03       26 阅读
  3. dma123456

    2024-03-27 05:38:03       30 阅读
  4. ARM DMA使用整理

    2024-03-27 05:38:03       60 阅读

最近更新

  1. docker php8.1+nginx base 镜像 dockerfile 配置

    2024-03-27 05:38:03       98 阅读
  2. Could not load dynamic library ‘cudart64_100.dll‘

    2024-03-27 05:38:03       106 阅读
  3. 在Django里面运行非项目文件

    2024-03-27 05:38:03       87 阅读
  4. Python语言-面向对象

    2024-03-27 05:38:03       96 阅读

热门阅读

  1. IOS面试题编程机制 71-75

    2024-03-27 05:38:03       34 阅读
  2. 【CSP试题回顾】202104-2-邻域均值(优化)

    2024-03-27 05:38:03       41 阅读
  3. 大话设计模式之工厂模式

    2024-03-27 05:38:03       43 阅读
  4. 【node】Missing script start or file server.js

    2024-03-27 05:38:03       40 阅读
  5. 蓝桥杯:BFS

    2024-03-27 05:38:03       36 阅读
  6. Unity3D 主城角色动画控制与消息触发详解

    2024-03-27 05:38:03       39 阅读
  7. 约瑟夫环-递推公式的个人理解

    2024-03-27 05:38:03       40 阅读
  8. 计算机网络(04)

    2024-03-27 05:38:03       45 阅读
  9. C# get set 访问器

    2024-03-27 05:38:03       38 阅读
  10. 智能媒体api调用

    2024-03-27 05:38:03       43 阅读
  11. C#语言规范及特殊用法笔记

    2024-03-27 05:38:03       46 阅读