在上面的代码中,ADC_Values是一个uint32_t类型的数组,用于存储DMA传输的ADC转换结果。由于我们配置了ADC采集两个通道的数据,所以数组的大小设置为2。在实际应用中,可以根据需要调整数组的大小和DMA传输的数据量。 通过以上步骤,就可以在STM32F103上使用HAL库实现单次DMA采集多通道ADC数据的功能。
ADC_RegularChannelConfig(ADC1, ch, 1, ADC_SampleTime_7Cycles5 ); //设置ADC1通道ch的转换周期为7.5个采样周期,采样次序为1 ADC_SoftwareStartConvCmd(ADC1, ENABLE);//使能软件触发 while(!ADC_GetFlagStatus(ADC1, ADC_FLAG_EOC )){};//等待转换完成 adc_value = ADC_GetConversionValue(ADC1); //...
ADC_Init(ADC1, &ADC_InitStructure);// /* ADC1 regular channel6 configuration */ ADC_RegularChannelConfig(ADC1, ADC_Channel_6, 1, ADC_SampleTime_239Cycles5);//采样通道6 采样时间为239.5周期+12.5=252 /* Enable ADC1 DMA */ ADC_DMACmd(ADC1, ENABLE); /* Enable ADC1 */ ADC_Cmd(ADC1,...
1、采用的微控制器为STM32F103RCT6,该微控制器采用Cortex-M3体系结构,它拥有的资源包括: 48KB SRAM、 256KB FLASH、 2 个基本定时器、 4 个通用定时器、 2 个高级定时器、 2个 DMA 控制器(共 12 个通道)、 3 个 SPI、 2 个 IIC、 5 个串口、 1 个 USB、 1 个 CAN、 3 个 12位 ADC、 1 个...
再说GPIO到数组,这个我倒是有点想法。我一直想用32做个示波器,但这类东西基本满大街都是了,没什么新鲜的玩法。103系列自带的ADC最高采样率1MHZ,剩下就是算法加显示了。 如果能有个并行AD接在32外面,通过DMA快速读取,说不定能突破目前1MHZ的上限。不过目前测试效果并不算太惊艳,顶多突破到3MHZ,还要考虑数据同...
参数DMA_BufferSize :设置DMA在传输时缓冲区的长度 ,这里要提一下我的数据储存数组u16 ADCConvertedValue[100][2];因为采用两个通道,所以需要两个缓冲保存数据,100*2=200,DMA在运行是就会采集200个ADC值保存在数组中,100个通道4的值,100个通道5的值。取值处理会在后面介绍。
功能:使用PC4口(ADC_IN14)采样,采样频率100kHz。 那就开始吧,假设STM32CubeMX已安装好了。 现在手上板子上的MCU是STM32F103ZET6,外接8MHz晶振。MDK5的版本是5.18(平时CubeIDE用得多点),CubeMX的版本是6.4.0。 开工。 第1步,新建工程。从MCU选择新建工程,如图1所示。
本程序开始之前已经开通了DMA的ADC通道 1、建立工程后,依次点击如图1、2、3、4、5 2、波特率选择9600,也可以选别的,能满足需求的波特率尽可能小,越小越稳定 3.1、开启DMA,添加Tx发送信息 3.2、 同样的方法,添加Rx接收信息 ...
STM32F103配置了ADC1 的4个通道,利用定时器的事件触发进行10Hz 的数据采样,数据通过DMA传输。然后希望...
一.基本开发环境 1.MDK V5.27 2.STM32CUBEMX V6.0.1 3.芯片:STM32F103C6T6A 二.配置 1.选择SW调试 2.打开外部时钟 3.设置时钟参数 4.选择ADC通道 5.配置ADC 6.配置DMA 7.main.c 设置ADC数组 开启ADC校准 采集ADC