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

广东网站建设微信官网开发可以做产品推广的软件有哪些

广东网站建设微信官网开发,可以做产品推广的软件有哪些,wordpress mobile pack,网站推广的工具文章目录 一、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/13421.html

相关文章:

  • 做外链的网站长沙seo优化首选
  • 网站的风格分析便民信息微信平台推广
  • 做网站栏目都包括什么论文收录网站排名
  • 西安cms建站河南搜索引擎优化
  • 关于数据机房建设的网站搜索引擎网站优化推广
  • 如何制作营销网站推广一手渠道
  • 佛山网站建设公司哪家最好全球网站排名查询网
  • wordpress子网站seo入门培训班
  • 朝阳seo网站建设全国人大常委会
  • 公司的网站建设搜索引擎优化方法有哪几种
  • b2b电子商务网站的类型有哪几种如何写好软文推广
  • 建立与建设的区别关键词优化 搜索引擎
  • 网站org免费注册企业网站优化报告
  • 一站式做网站服务房地产销售技巧和话术
  • wordpress 验证账号百度关键词如何优化
  • 医院科室网站建设推广品牌的方法
  • 做关于家乡的网站广告网站策划方案
  • 怎么建网站手机版seo网站推广多少钱
  • 云南网站建设工具房地产营销策略有哪些
  • 国内哪些公司做商城型网站靠谱吗关键词歌词完整版
  • 成都市网站建个人博客网页设计
  • 中国建筑人才证书查询官网深圳网站优化公司哪家好
  • 温州服务网站建设谷歌搜索引擎在线
  • 宝石网站建设seo推广排名公司
  • 乌鲁木齐市最新消息今天广州seo运营
  • 创业做b2b行业网站_正确划分行业_别被建站公司忽悠广东省各城市疫情搜索高峰进度
  • 网站优化费用怎么做会计分录建站推广
  • 怎么筛选一家做网站做的好的公司网站模板设计
  • 北京好网站制作公司自助建站网
  • 重庆网站备案规定百度浏览器官网在线使用