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

北京网站开发网站建设报价如何建立个人网址

北京网站开发网站建设报价,如何建立个人网址,网站开发的人员,设计素材网站有哪些免费文章目录 一、DMA1.1简介1.2存储器映像1.3DMA框图1.4DMA基本结构1.5DMA请求1.6数据宽度与对齐1.7数据转运DMA1.8ADC扫描模式DMA 二、数据转运DMA2.1接线图2.2代码2.3相关API 一、DMA 1.1简介 DMA(Direct Memory Access)直接存储器存取 DMA可以提供外设…

文章目录

  • 一、DMA
    • 1.1简介
    • 1.2存储器映像
    • 1.3DMA框图
    • 1.4DMA基本结构
    • 1.5DMA请求
    • 1.6数据宽度与对齐
    • 1.7数据转运+DMA
    • 1.8ADC扫描模式+DMA
  • 二、数据转运+DMA
    • 2.1接线图
    • 2.2代码
    • 2.3相关API

一、DMA

1.1简介

  • DMA(Direct Memory Access)直接存储器存取

  • DMA可以提供外设和存储器或者存储器和存储器之间的高速数据传输,无须CPU干预,节省了CPU的资源

  • 12个独立可配置的通道: DMA1(7个通道), DMA2(5个通道)每个通道都支持软件触发和特定的硬件触发

  • STM32F103C8T6 DMA资源:DMA1(7个通道)

1.2存储器映像

在这里插入图片描述

1.3DMA框图

在这里插入图片描述

1.4DMA基本结构

在这里插入图片描述

1.5DMA请求

在这里插入图片描述

1.6数据宽度与对齐

在这里插入图片描述

1.7数据转运+DMA

在这里插入图片描述

1.8ADC扫描模式+DMA

在这里插入图片描述

二、数据转运+DMA

2.1接线图

在这里插入图片描述

2.2代码

main.c

#include "stm32f10x.h"                  // Device header
#include "Delay.h"
#include "OLED.h"
#include "MyDMA.h"uint8_t DataA[] = {0x01, 0x02, 0x03, 0x04};				//定义测试数组DataA,为数据源
uint8_t DataB[] = {0, 0, 0, 0};							//定义测试数组DataB,为数据目的地int main(void)
{/*模块初始化*/OLED_Init();				//OLED初始化MyDMA_Init((uint32_t)DataA, (uint32_t)DataB, 4);	//DMA初始化,把源数组和目的数组的地址传入/*显示静态字符串*/OLED_ShowString(1, 1, "DataA");OLED_ShowString(3, 1, "DataB");/*显示数组的首地址*/OLED_ShowHexNum(1, 8, (uint32_t)DataA, 8);OLED_ShowHexNum(3, 8, (uint32_t)DataB, 8);while (1){DataA[0] ++;		//变换测试数据DataA[1] ++;DataA[2] ++;DataA[3] ++;OLED_ShowHexNum(2, 1, DataA[0], 2);		//显示数组DataAOLED_ShowHexNum(2, 4, DataA[1], 2);OLED_ShowHexNum(2, 7, DataA[2], 2);OLED_ShowHexNum(2, 10, DataA[3], 2);OLED_ShowHexNum(4, 1, DataB[0], 2);		//显示数组DataBOLED_ShowHexNum(4, 4, DataB[1], 2);OLED_ShowHexNum(4, 7, DataB[2], 2);OLED_ShowHexNum(4, 10, DataB[3], 2);Delay_ms(1000);		//延时1s,观察转运前的现象MyDMA_Transfer();	//使用DMA转运数组,从DataA转运到DataBOLED_ShowHexNum(2, 1, DataA[0], 2);		//显示数组DataAOLED_ShowHexNum(2, 4, DataA[1], 2);OLED_ShowHexNum(2, 7, DataA[2], 2);OLED_ShowHexNum(2, 10, DataA[3], 2);OLED_ShowHexNum(4, 1, DataB[0], 2);		//显示数组DataBOLED_ShowHexNum(4, 4, DataB[1], 2);OLED_ShowHexNum(4, 7, DataB[2], 2);OLED_ShowHexNum(4, 10, DataB[3], 2);Delay_ms(1000);		//延时1s,观察转运后的现象}
}

MyDMA.c

#include "stm32f10x.h"                  // Device headeruint16_t MyDMA_Size;					//定义全局变量,用于记住Init函数的Size,供Transfer函数使用/*** 函    数:DMA初始化* 参    数:AddrA 原数组的首地址* 参    数:AddrB 目的数组的首地址* 参    数:Size 转运的数据大小(转运次数)* 返 回 值:无*/
void MyDMA_Init(uint32_t AddrA, uint32_t AddrB, uint16_t Size)
{MyDMA_Size = Size;					//将Size写入到全局变量,记住参数Size/*开启时钟*/RCC_AHBPeriphClockCmd(RCC_AHBPeriph_DMA1, ENABLE);						//开启DMA的时钟/*DMA初始化*/DMA_InitTypeDef DMA_InitStructure;										//定义结构体变量DMA_InitStructure.DMA_PeripheralBaseAddr = AddrA;						//外设基地址,给定形参AddrADMA_InitStructure.DMA_PeripheralDataSize = DMA_PeripheralDataSize_Byte;	//外设数据宽度,选择字节DMA_InitStructure.DMA_PeripheralInc = DMA_PeripheralInc_Enable;			//外设地址自增,选择使能DMA_InitStructure.DMA_MemoryBaseAddr = AddrB;							//存储器基地址,给定形参AddrBDMA_InitStructure.DMA_MemoryDataSize = DMA_MemoryDataSize_Byte;			//存储器数据宽度,选择字节DMA_InitStructure.DMA_MemoryInc = DMA_MemoryInc_Enable;					//存储器地址自增,选择使能DMA_InitStructure.DMA_DIR = DMA_DIR_PeripheralSRC;						//数据传输方向,选择由外设到存储器DMA_InitStructure.DMA_BufferSize = Size;								//转运的数据大小(转运次数)DMA_InitStructure.DMA_Mode = DMA_Mode_Normal;							//模式,选择正常模式DMA_InitStructure.DMA_M2M = DMA_M2M_Enable;								//存储器到存储器,选择使能DMA_InitStructure.DMA_Priority = DMA_Priority_Medium;					//优先级,选择中等DMA_Init(DMA1_Channel1, &DMA_InitStructure);							//将结构体变量交给DMA_Init,配置DMA1的通道1/*DMA使能*/DMA_Cmd(DMA1_Channel1, DISABLE);	//这里先不给使能,初始化后不会立刻工作,等后续调用Transfer后,再开始
}/*** 函    数:启动DMA数据转运* 参    数:无* 返 回 值:无*/
void MyDMA_Transfer(void)
{DMA_Cmd(DMA1_Channel1, DISABLE);					//DMA失能,在写入传输计数器之前,需要DMA暂停工作DMA_SetCurrDataCounter(DMA1_Channel1, MyDMA_Size);	//写入传输计数器,指定将要转运的次数DMA_Cmd(DMA1_Channel1, ENABLE);						//DMA使能,开始工作while (DMA_GetFlagStatus(DMA1_FLAG_TC1) == RESET);	//等待DMA工作完成DMA_ClearFlag(DMA1_FLAG_TC1);						//清除工作完成标志位
}

MyDMA.h

#ifndef __MYDMA_H
#define __MYDMA_Hvoid MyDMA_Init(uint32_t AddrA, uint32_t AddrB, uint16_t Size);
void MyDMA_Transfer(void);#endif

2.3相关API

http://www.dtcms.com/wzjs/507311.html

相关文章:

  • 做网站要用到哪些架包全渠道营销案例
  • 刷手机网站关键词seo公司推荐推广平台
  • 做详情图的网站网络营销的概念与含义
  • 上海网站建设caiyiduo百度站内搜索
  • 做网站时图片要切片有什么作用东莞seo技术
  • 用php建设一个简单的网站seo权重优化软件
  • 高端网站建设南宁桂林网站优化
  • 营销型网站框架百度地图排名怎么优化
  • 免费做公众号的网站百度百科官网
  • 免费的seo网站膝商丘关键词优化推广
  • 上海app外包免费seo快速收录工具
  • 平台b2c网站建设北京seo地址
  • 北京网站开开发公司电话seo销售是做什么的
  • 中企动力济南分公司seo关键词排名优化方案
  • 网站开发及应用今天最新消息
  • 网站多多sem 优化价格
  • 视频背景做网站背景合肥网络推广营销
  • 购物网站优化的建议免费打广告平台有哪些
  • 最近三天的新闻大事摘抄优化关键词哪家好
  • 织梦网站怎么做301跳转企业关键词优化公司
  • 如何用dw做网站建网站的详细步骤
  • 西安手机网站开发互联网营销师报名费
  • 营销师资格证临安网站seo
  • 网站资料如何做脚注推广普通话宣传内容
  • 在哪找专业做淘宝网站整站优化seo公司哪家好
  • 深圳做微商网站的公司查网站流量查询工具
  • 禅城区做网站策划上海专业seo服务公司
  • 怎样让百度收录网站武汉seo招聘
  • MAKA网站做H5怎么压缩图片整合营销策略有哪些
  • wordpress 歌词优化设计六年级下册语文答案