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

轻淘客cms建站教程苏州头条新闻

轻淘客cms建站教程,苏州头条新闻,网页设计作业百度网盘,郑州市做网站的公1、简述 DMA#xff1a;Direct Memory Access#xff0c;直接内存访问 ADC#xff1a;Analog to Digital Converter#xff0c;模数转换器#xff0c;模拟信号转换成数字信号的电路#xff08;采样-量化-编码#xff09; 参考博客#xff1a; STM32DMA功能详解 STM32…1、简述 DMADirect Memory Access直接内存访问 ADCAnalog to Digital Converter模数转换器模拟信号转换成数字信号的电路采样-量化-编码 参考博客 STM32DMA功能详解 STM32F4之ADC介绍 DMA传输将数据从一个地址空间复制到另一个地址空间提供在外设和存储器之间或者存储器和存储器之间的高速数据传输。这里的存储器可以是片内的SRAM默认存放变量或者是FLASH默认存放常量被const修饰的全局变量可以看成是常量类型而外设指的其实是外设的数据寄存器。但它们本质上是一样的都是从内存的某一区域传输到内存的另一区域外设的数据寄存器本质上就是内存的一个存储单元。 我们知道CPU有转移数据、计算、控制程序转移等很多功能系统运作的核心就是CPUCPU无时不刻的在处理着大量的事务但有些事情却没有那么重要比方说数据的复制和存储数据DMA的主要功能是用来搬数据在传输数据的时候CPU就可以不被占用用来干其他事情对于实时性要求比较高的场合我们可以利用DMA来减小CPU的负担。 因此转移数据尤其是转移大量数据是可以不需要CPU参与。比如希望外设A的数据拷贝到外设B只要给两种外设提供一条数据通路直接让数据由A拷贝到B不经过CPU的处理通过DMA解决大量数据转移过度消耗CPU资源的问题。 2、模拟量检测 2.1 初始化步骤 模拟量检测需要将GPIO引脚设置为模拟输入模式、设置模数转换ADC、设置DMA等完整初始化步骤如下 初始化时钟 初始化GPIO 初始化ADC 初始化DMA 使能ADC 使能DMA2.2 初始化时钟 void RCC_Configuration(void) {# a) DMA1 的时钟RCC_AHBPeriphClockCmd(RCC_AHBPeriph_DMA1, ENABLE); # b) 使能GPIO 和 ADC1 的时钟RCC_APB2PeriphClockCmd(RCC_APB2Periph_GPIOA |RCC_APB2Periph_ADC1, ENABLE );# c) 因为ADC时钟不要超过14M否则精度会下降因此设置ADC分频因子6即72M/612MRCC_ADCCLKConfig(RCC_PCLK2_Div6); }2.3 初始化GPIO void GPIO_Configuration(void) {GPIO_InitTypeDef GPIO_InitStructure;GPIO_InitStructure.GPIO_Pin GPIO_Pin_0; # a将引脚设置为模拟输入引脚GPIO_InitStructure.GPIO_Mode GPIO_Mode_AIN;GPIO_InitStructure.GPIO_Speed GPIO_Speed_50MHz;GPIO_Init(GPIOA, GPIO_InitStructure); }2.4 初始化ADC void ADC1_Configuration(void) {ADC_InitTypeDef ADC_InitStructure;# a将外设ADC1的全部寄存器重设为缺省值ADC_DeInit(ADC1); # b设置为独立工作模式ADC1和ADC2工作在独立模式ADC_InitStructure.ADC_Mode ADC_Mode_Independent; # c使能扫描模式ADC_InitStructure.ADC_ScanConvMode ENABLE; # d连续转换模式ADC_InitStructure.ADC_ContinuousConvMode ENABLE; # e关闭外部触发转换ADC_InitStructure.ADC_ExternalTrigConv ADC_ExternalTrigConv_None; # fADC数据右对齐ADC_InitStructure.ADC_DataAlign ADC_DataAlign_Right; # g按顺序规划转换的 ADC 通道的数目ADC_InitStructure.ADC_NbrOfChannel M; ADC_Init(ADC1, ADC_InitStructure); # h设置转换顺序和时间ADC_RegularChannelConfig(ADC1, ADC_Channel_0, 1, ADC_SampleTime_55Cycles5 );# i使能 ADC 的 DMA功能ADC_DMACmd(ADC1, ENABLE);# j使能指定ADC这里是ADC1ADC_Cmd(ADC1, ENABLE);# k复位指定 ADC1 的校准寄存器ADC_ResetCalibration(ADC1); # l等待完成复位校准寄存器while(ADC_GetResetCalibrationStatus(ADC1)); # m开始指定 ADC1 的校准状态ADC_StartCalibration(ADC1); /# n等待获取 ADC1 的校准状态while(ADC_GetCalibrationStatus(ADC1)); }2.5 初始化DMA void DMA_Configuration(void) {DMA_InitTypeDef DMA_InitStructure;# a将 DMA 的通道1寄存器重置为缺省值DMA_DeInit(DMA1_Channel1); # bDMA 外设基地址指向 ADC1DMA_InitStructure.DMA_PeripheralBaseAddr (u32)ADC1-DR; # c设置内存基地址DMA_InitStructure.DMA_MemoryBaseAddr (u32)AD_Value;# d将内存作为数据传输的目的地 DMA_InitStructure.DMA_DIR DMA_DIR_PeripheralSRC; # eDMA 的缓存大小DMA_InitStructure.DMA_BufferSize N*M; # f外设地址寄存器不变DMA_InitStructure.DMA_PeripheralInc DMA_PeripheralInc_Disable;# g内存地址寄存器递增DMA_InitStructure.DMA_MemoryInc DMA_MemoryInc_Enable;# h外设数据宽度为16位DMA_InitStructure.DMA_PeripheralDataSize DMA_PeripheralDataSize_HalfWord;# i内存数据宽度为16位DMA_InitStructure.DMA_MemoryDataSize DMA_MemoryDataSize_HalfWord; # j循环缓存模式DMA_InitStructure.DMA_Mode DMA_Mode_Circular;# k高优先级DMA_InitStructure.DMA_Priority DMA_Priority_High;# l这里是外设到内存直接传输因此关闭内存到内存模式DMA_InitStructure.DMA_M2M DMA_M2M_Disable;DMA_Init(DMA1_Channel1, DMA_InitStructure); }2.6 使能ADC 和 DMA ADC_SoftwareStartConvCmd(ADC1, ENABLE);DMA_Cmd(DMA1_Channel1, ENABLE); 2.7 使用数据 使能后从ADC1采集的模数转换后的值将循环存储在数组AD_Value中对AD_Value中数据求平均值即可 #define N 50 #define M 1 vu16 AD_Value[N][M]; vu16 After_filter[M]; int i;void filter(void) {int sum 0;u8 count;for ( count0;countN;count){sum AD_Value[count][0];}After_filter[0]sum/N;sum0; }3、时钟设置小结 3.1 GPIO作为输出时 如点亮LED灯实验时开启GPIOB的时钟 RCC_APB2PeriphClockCmd(RCC_APB2Periph_GPIO,ENABLE);3.2 GPIO作为输入时轮询方式 如按键实验将PA0作为按键 RCC_APB2PeriphClockCmd(RCC_APB2Periph_GPIOA,ENABLE);3.3 GPIO作为输入时中断方式 如按键实验将PC13作为按键以中断方式打开需要打开复用时钟 RCC_APB2PeriphClockCmd(RCC_APB2Periph_GPIOC|RCC_APB2Periph_AFIO,ENABLE);3.4 配置串口UASRT 需要先设置引脚的时钟然后设置串口的时钟。 如配置UASRT1时用到了PA9和PA10所有要开启GPIOA的时钟另外还有开启USART1的时钟。 RCC_APB2PeriphClockCmd(RCC_APB2Periph_GPIOA,ENABLE); RCC_APB2PeriphClockCmd(RCC_APB2Periph_USART1,ENABLE); 3.5 配置DMA DMA挂载在AHB总线上 RCC_AHBPeriphClockCmd(RCC_AHBPeriph_DMA1,ENABLE);3.6 配置基本定时器 基本定时器挂载在APB1总线上 RCC_APB1PeriphClockCmd(RCC_APB1Periph_TIM6,ENABLE);3.7 配置通用定时器 通用定时器挂载在APB1总线上。 RCC_APB1PeriphClockCmd(RCC_APB1Periph_TIM3,ENABLE); 3.8 其它注意事项 1配置按键中断时只需要开启相应的GPIO的时钟。初始化EXTI结构体时不需要开启EXTI时钟。 2配置NVIC中断向量控制器时不需要开启时钟。 3使用SysTick系统定时器时不需要开启时钟。
http://www.w-s-a.com/news/239859/

相关文章:

  • wordpress英文采集wordpress seo 链接
  • 进入建设银行的网站就打不了字工程建设标准化网站
  • 杭州网站推广大全网站建设演讲稿
  • 厦门网站的制作太仓专业网站建设
  • 天津公司网站建设公司哪家好在阿里巴巴国际网站上需要怎么做
  • 网站关键词seo推广公司哪家好无锡市无锡市住房和城乡建设局网站
  • 开远市新农村数字建设网站网站如何做QQ登录
  • 自己做个网站教程高端网站开发哪家强
  • 网站模板免费下载中文版大连网站建设哪家专业
  • 网站建设的基本代理公司注册公司坑人
  • 企业网站被黑后如何处理wordpress邮件发送类
  • 北京网站的网站建设公司建设工程竣工验收消防备案网站
  • 淄博市 网站建设报价wordpress里的发消息给我
  • 网站下拉菜单怎么做游戏网站模板免费下载
  • 阿里云上做网站套模板怎么做一个网站开发小组
  • 营销型网站源码下载青岛做网站建设的公司哪家好
  • 迁西网站定制怎么制作网址内容
  • 深圳装饰公司网站宁波网站建设哪里有
  • 建站网站破解版怎么看自己的网站是用什么做的
  • 做微商那个网站好织梦模板更新网站
  • 网站注册表单怎么做手机做网站需要多少天
  • 书店商城网站html模板下载企业网站建设方案书范文
  • 建设网站是普通办公吗快速排名seo软件
  • 大型外贸网站建设网站建设图片尺寸要求
  • 网站建设可信赖北京网站开发月薪
  • 专门做lolh的网站wordpress 模版 cho's
  • 网上做设计兼职哪个网站好点网站开发毕业周记
  • 自学商城网站建设无为网页定制
  • wordpress全站cdn手机网站调用分享
  • 淄博做网站58同城wordpress微信号订阅