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_Values是一个uint32_t类型的数组,用于存储DMA传输的ADC转换结果。由于我们配置了ADC采集两个通道的数据,所以数组的大小设置为2。在实际应用中,可以根据需要调整数组的大小和DMA传输的数据量。 通过以上步骤,就可以在STM32F103上使用HAL库实现单次DMA采集多通道ADC数据的功能。
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个12位DAC、1个SDIO接口及51个通用IO口分三组,该芯...
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.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
参数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所示。
再说GPIO到数组,这个我倒是有点想法。我一直想用32做个示波器,但这类东西基本满大街都是了,没什么新鲜的玩法。103系列自带的ADC最高采样率1MHZ,剩下就是算法加显示了。 如果能有个并行AD接在32外面,通过DMA快速读取,说不定能突破目前1MHZ的上限。不过目前测试效果并不算太惊艳,顶多突破到3MHZ,还要考虑数据同...
5、在此界面中点击“Add”,选择“ADC1” 6、在此界面中,2是循环模式,3是选择优先级中等 7、点击代码生成,并打开代码 8、双击打开“main.c” 9、添加代码 9.1、找到代码如下 /* Private variables ---*/ /* USER CODE BEGIN PV */ /* USER CODE END PV */ 添加代码后,...
void DMA_ADC_Config(DMA_Channel_TypeDef* DMA_CHx,u32 cpar,u32 cmar,u16 cndtr) { RCC_AHBPeriphClockCmd(RCC_AHBPeriph_DMA1, ENABLE);//使能DMA传输 DMA_DeInit(DMA_CHx);//将DMA的通道1寄存器重设为缺省值 DMA_InitStructure.DMA_PeripheralBaseAddr = cpar;//DMA外设ADC基地址 ...