当前位置: 首页 > news >正文

DMA知识

提示:文章

文章目录

  • 前言
  • 一、背景
  • 二、
    • 2.1
    • 2.2
  • 总结

前言

前期疑问:
本文目标:


一、背景

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


总结

未完待续

相关文章:

  • selenium元素定位--xpath定位--层级与逻辑组合定位
  • VUE3——reactive对比ref
  • 阿里云子域名配置,且不带端口访问
  • unity实现2D主角视野锥解决方案
  • 部标JT808车辆定位监控平台单服务器13.6万接入压力测试记录(附源码)
  • 面试题-Elasticsearch集群架构和调优手段(超全面)
  • 谷粒商城——缓存——SpringCache
  • 计算机网络——网络基础1
  • 在django中使用kindeditor出现转圈问题
  • Leetcode 3.26
  • 图像处理与视觉感知---期末复习重点(4)
  • 【前端】-【性能优化常识】
  • Midjourney AI绘图工具介绍及使用
  • GIMP - GNU 图像处理程序 - 工具栏窗口 (Toolbox) 显示
  • checkpoint 大模型、VAE、LoRA、Embedding、Controlnet这些是什么模型
  • @jsonView过滤属性
  • 0基础学习移动端适配
  • Android单元测试 - 几个重要问题
  • echarts花样作死的坑
  • JavaScript 无符号位移运算符 三个大于号 的使用方法
  • Js基础——数据类型之Null和Undefined
  • PHP 的 SAPI 是个什么东西
  • TCP拥塞控制
  • 发布国内首个无服务器容器服务,运维效率从未如此高效
  • 给自己的博客网站加上酷炫的初音未来音乐游戏?
  • 简单数学运算程序(不定期更新)
  • 深入 Nginx 之配置篇
  • 使用agvtool更改app version/build
  • 使用parted解决大于2T的磁盘分区
  • 想晋级高级工程师只知道表面是不够的!Git内部原理介绍
  • 远离DoS攻击 Windows Server 2016发布DNS政策
  • RDS-Mysql 物理备份恢复到本地数据库上
  • 没有任何编程基础可以直接学习python语言吗?学会后能够做什么? ...
  • ​ArcGIS Pro 如何批量删除字段
  • # Panda3d 碰撞检测系统介绍
  • # 数据结构
  • #DBA杂记1
  • #Linux(权限管理)
  • (C++)栈的链式存储结构(出栈、入栈、判空、遍历、销毁)(数据结构与算法)
  • (Matlab)遗传算法优化的BP神经网络实现回归预测
  • (附源码)计算机毕业设计大学生兼职系统
  • (一)Neo4j下载安装以及初次使用
  • (转载)Linux网络编程入门
  • .htaccess配置重写url引擎
  • .NET Framework 4.6.2改进了WPF和安全性
  • .NET MAUI学习笔记——2.构建第一个程序_初级篇
  • .Net 知识杂记
  • .NET/C# 使用反射注册事件
  • .Net7 环境安装配置
  • .netcore如何运行环境安装到Linux服务器
  • .NetCore实践篇:分布式监控Zipkin持久化之殇
  • .Net转Java自学之路—SpringMVC框架篇六(异常处理)
  • /ThinkPHP/Library/Think/Storage/Driver/File.class.php  LINE: 48
  • @test注解_Spring 自定义注解你了解过吗?
  • [ IOS ] iOS-控制器View的创建和生命周期