stm32采用dma方式的ADC

发布者:technology78最新更新时间:2017-10-31 来源: eefocus关键字:stm32  dma方式  ADC 手机看文章 扫描二维码
随时随地手机看文章

# define M 3

#define N 10

uint16_t AD_Value[N][M];

void ADC_Configuration(void)

{

ADC_InitTypeDef  ADC_InitStructure;

ADC_DeInit (ADC1 );//将外设adc1的全部寄存器设置为默认值

ADC_InitStructure .ADC_Mode =ADC_Mode_Independent ;//设置为独立ADC模式

ADC_InitStructure .ADC_ScanConvMode =ENABLE ;//adc工作在扫描模式

ADC_InitStructure .ADC_ContinuousConvMode =ENABLE  ;//开启连续转换模式

ADC_InitStructure .ADC_ExternalTrigConv =ADC_ExternalTrigConv_None;//外部触发转换关闭

ADC_InitStructure .ADC_DataAlign =ADC_DataAlign_Right ;//数据右对齐

ADC_InitStructure .ADC_NbrOfChannel =3;//顺序进行ADC转换的通道数目

ADC_Init (ADC1 ,&ADC_InitStructure );//初始化外设ADC1的寄存器

//功能:设置指定ADC的规则组通道,设置它们的转化顺序和采样时间。

//参数1:指定ADC1或者ADC2

//参数2:指定被设置的ADC通道

//参数3:规则组采样顺序

//参数4:指定ADC采样时间。239.5周期

ADC_RegularChannelConfig(ADC1,ADC_Channel_14,1,ADC_SampleTime_239Cycles5 );//system_basic

ADC_RegularChannelConfig(ADC1,ADC_Channel_13,2,ADC_SampleTime_239Cycles5 );//AD_Signal

ADC_RegularChannelConfig(ADC1,ADC_Channel_12,3,ADC_SampleTime_239Cycles5 );//REF_signal

ADC_DMACmd (ADC1 ,ENABLE );

ADC_Cmd (ADC1,ENABLE );

ADC_ResetCalibration (ADC1 );//复位指定的adc校准寄存器

while(ADC_GetResetCalibrationStatus (ADC1 ));//等待校准寄存器复位完成

ADC_StartCalibration (ADC1 );//开始指定adc的校准

while(ADC_GetCalibrationStatus (ADC1 ));//等待校准完成

ADC_SoftwareStartConvCmd (ADC1 ,ENABLE );//使能指定的adc的软件转换启动功能

}

void DMA_Configuration(void)

{

DMA_InitTypeDef DMA_InitStructure;

DMA_DeInit (DMA1_Channel1 );//将DMA的通道1寄存器设为默认值

DMA_InitStructure .DMA_PeripheralBaseAddr =(u32)&(ADC1->DR);//DMA外设的基地址

DMA_InitStructure.DMA_MemoryBaseAddr =(u32)&AD_Value;//DMA内存地址

DMA_InitStructure .DMA_DIR =DMA_DIR_PeripheralSRC;//外设作为源,数据传输方向为外设到内存

DMA_InitStructure .DMA_BufferSize =N*M;//DMA缓存的大小

DMA_InitStructure .DMA_PeripheralInc =DMA_PeripheralInc_Disable;//接收一次数据后,外设地址固定

DMA_InitStructure .DMA_MemoryInc =DMA_MemoryInc_Enable;//内存地址自增

DMA_InitStructure .DMA_PeripheralDataSize =DMA_PeripheralDataSize_HalfWord ;//DMA外设数据长度为半字,16字节

DMA_InitStructure .DMA_MemoryDataSize =DMA_MemoryDataSize_HalfWord;//内存数据长度,16字节

DMA_InitStructure .DMA_Mode =DMA_Mode_Circular ;//工作在循环模式

DMA_InitStructure .DMA_Priority =DMA_Priority_High ;//DMA通道拥有高优先级

DMA_InitStructure .DMA_M2M =DMA_M2M_Disable ;//DMA 通道没有设置为内存到内存传输

DMA_Init (DMA1_Channel1  ,&DMA_InitStructure );//初始化dma1

DMA_Cmd (DMA1_Channel1 ,ENABLE );

}


关键字:stm32  dma方式  ADC 引用地址:stm32采用dma方式的ADC

上一篇:stm32的USART如何发送字符、字符串
下一篇:stm32串口usart的使用

推荐阅读最新更新时间:2024-03-16 15:42

STM32-(21):NVIC中断
NVIC:提供中断控制器,用于总体管理异常,称之为“内嵌向量中断控制器:Nested Vectored Interrupt Controller (NVIC)”。NVIC和处理器内核紧密相连. 中断的概念: 1、为什么需要中断? 有很重要的事件需要处理 2、中断来之之后,CPU需要做什么? 首先保护现场,处理中断,恢复现场 3、中断完了之后,怎么办? 继续处理原来的事件 1.编写一个数码管不断刷新和显示的程序: 当用户按下键盘时,数码管停止更新;当用户再次按下键盘时,数码管继续更新。 按键电路: Main() { while(1) { //数码管的值的更新函数 //数码管刷新函数 //按键判断函数 } }
[单片机]
STM32-(21):NVIC中断
STM32的数据传输外设:USART、I2C、SPI三种常见接口的学习
一、USART串行接口 串行接口分为异步串行接口和同步串行接口两种,其中异步串行接口统称为通用异步收发器接口UART,具有同步功能的UART(包含时钟信号SCLK)称为通用同步/异步收发器接口USART。 USART的电气特性标准包括RS-232C、RS422、RS423和RS485等,其中RS-232C是最常见的串行通信接口(台式机的显示器与主机的连接线好像就是RS232吧) RS232有9个引脚,当然最常用的只有三个:RXD(接收数据)、TXD(发送数据)、GND(用来共地);而RS232的主要指标有两个:数据速率和数据格式。数据速率就是我们设置的波特率,而数据格式便是我们设置的起始位、数据位、校验位、停止位;
[单片机]
<font color='red'>STM32</font>的数据传输外设:USART、I2C、SPI三种常见接口的学习
意法半导体推出新STM32微处理器,让先进物联网设备兼顾性能、功耗和成本
意法半导体推出新STM32微处理器,让先进物联网设备兼顾性能、功耗和成本 STM32MP13 MPU面向传统嵌入式微控制器难以胜任的应用场景 在新的注重成本的单核微处理器内整合更高性能、更多安全功能与更优的能效 2023年3月16日,中国 – 服务多重电子应用领域、全球排名前列的半导体公司意法半导体(STMicroelectronics,简称ST;)推出最新的STM32微处理器(MPU),赋能下一代智能设备,创造更安全、低碳绿色的生活。 节能降耗、降低运营成本、提高安全性、改进用户体验是智能建筑、工厂自动化和智慧城市的主要发展趋势。工业自动化、通信网关、支付终端、家电和控制面板等满足这些需求趋势的最新应用对处理器
[单片机]
意法半导体推出新<font color='red'>STM32</font>微处理器,让先进物联网设备兼顾性能、功耗和成本
A/D: 基于STC89C52与ADC0804的A/D设计详解
一. 硬件设计详解 1)A/D转换原理 通过采样,量化和编码这三个步骤来完成, 即首先对输入的模拟电压信号采样,采样结束后进入保持时间,在 这段时间内将采样的电压量转化为数字量,并按一定的编码形式给出转换结果,然后开始下一次采样。 采样需满足采样定理,即采样频率fs要大于输入信号的最高频率分量fimax的频率,一般取fs = (2~3)fimax, 2) A/D转换器的类型 包括两类,直接A/D转换器和间接A/D转换器, 其中直接A/D转换器包括并行比较型A/D转换器和反馈比较型A/D转换器。 间接A/D转换器包括电压-时间变换型(V-T变换型)和电压-频率变换型(V-F变换型)。 a. 并行比较型A/D转换
[单片机]
A/D: 基于STC89C52与<font color='red'>ADC</font>0804的A/D设计详解
STM32速成笔记(9)—RTC
一、RTC简介 RTC(Real Ti me Clock) 实时时钟 ,它是一个独立的 定时器 。RTC模块拥有一组连续计数的计数器,在相应软件配置下,可提供 时钟 日历的功能。修改计数器的值可以重新设置系统当前的时间和日期。 RTC模块和时钟配置都是在后备区域,无论单片机处于何种状态,只要保证后备区正常 供电 ,RTC就会一直工作。 二、 STM32 的RTC 2.1 主要特性 • 可 编程 的预分频系数 :分频系数最高为2^20 • 32位的可编程计数器 ,可用于较长时间段的测量 • 可以选择以下三种RTC的时钟源 ─ HSE时钟除以128 ─ LSE 振荡器 时钟 ─ LSI振荡器时钟 • 3个专门的可屏蔽中断
[单片机]
<font color='red'>STM32</font>速成笔记(9)—RTC
STM32菜鸟成长记录---1
学习新知识我的一个方法是: 1.先把握住新东西大的一个框架、涉及的内容、范围; 简而言之:理清架构,把握重点; 2.在看清楚大的框架所涉及的知识时,再度量哪些是我所需要必须学习的(重点),哪些是现在不急着掌握的可以以后学习; 简而言之:去我所需,为我所用; 3.理论归理论,掌握理论知识的基础上,加以应用,能更深刻的理解这些知识点; 简而言之:实践出真知; 声明:本文部分参考自--《STM32自学笔记集合》 第一讲: STM32是Cortex-M3系列之一,而Cortex-M3处理器采用的是ARMv7-M架构。 系统架构: 希望大家关注AHB总线,这是贯穿所有外设的一条总线,上图可知:AHB经过桥接,由A
[单片机]
<font color='red'>STM32</font>菜鸟成长记录---1
fatfs文件系统f_lseek追加文件
这个时候我以为读出的数据应该是 stm32f107学习!!!文件系统学习!!!! 但是读出来的只有 文件系统学习!!!! 也就是先前写入的 tx_buff 中的数据被 tx_buff1 中的数据覆盖了。 查看f_open函数发现fp- fptr = 0;fp- dsect = 0;调用后每次打开文件会将指针清零,所以每次都从头写。 如果追加文件则需要移动文件指针,f_lseek函数则派上用处了。此函数用于文件指针的移动,共有两个参数,第一个参数为文件对象,第二个参数为移动的字节数。在这里则F_LSEEK(&fsrc,fsrc.fsize)指向文件结尾,即可追加文件。注意第二个参数是相对于文件的开始,如
[单片机]
STM32如何收发float类型数据?
在之前文章里提到了共用体用来传输浮点数的用法,但那篇笔记中没有详细介绍,这篇笔记我们一起来看一看具体实例。 实际应用中,我们可能需要两个设备通过串口传输浮点数据: 本篇笔记为了方便演示,使用串口助手模拟其中一个设备,本篇笔记内容如下: 我们创建一个用于管理float类型数据的共用体: unionfloat_data { floatf_data; uint8_tbyte ; }; 数据的流向如: 本次使用串口助手模拟发送设备,省略了第一步,主要看第②、③步。 创建两个共用体变量,用于发送与接收: unionfloat_datarx_float_data,tx_float_data; 收发相关代码: 左
[单片机]
<font color='red'>STM32</font>如何收发float类型数据?
小广播
添点儿料...
无论热点新闻、行业分析、技术干货……
设计资源 培训 开发板 精华推荐

最新单片机文章
何立民专栏 单片机及嵌入式宝典

北京航空航天大学教授,20余年来致力于单片机与嵌入式系统推广工作。

换一换 更多 相关热搜器件
电子工程世界版权所有 京B2-20211791 京ICP备10001474号-1 电信业务审批[2006]字第258号函 京公网安备 11010802033920号 Copyright © 2005-2024 EEWORLD.com.cn, Inc. All rights reserved