ADC_CommonInit(&ADC_CommonInitStructure);//4.配置ADC的通道ADC_InitStructure.ADC_Resolution = ADC_Resolution_12b;//ADC的分辨率为12位 //转换精度 0~4095ADC_InitStructure.ADC_ScanConvMode = DISABLE;//不扫描ADC_InitStructure.ADC_ContinuousConvMode = DISABLE;//不连续ADC_InitStructure.ADC_ExternalTrigConvE...
接下来配置ADC ADC1_InitStructure.ADC_Mode = ADC_Mode_Independent;//ADC模式(是否启用双ADC模式) 使用独立模式ADC1_InitStructure.ADC_ScanConvMode = ENABLE; //扫描模式(单通道与多通道) 使能扫描模式ADC1_InitStructure.ADC_ContinuousConvMode = ENABLE; //连续模式(连续模式或是单次模式) 使能连续模式ADC1_...
DMA这里要开启循环模式: TIM3的配置如下,这里实现了一个1ms的定时,也就是说每隔1ms自动触发一次AD转换: 主函数里代码如下: 然后中断里做一下处理即可: 好了,对ADC的使用方法做了一下简单的整理,当然肯定不止这些,必然还有别的玩法。这篇文章以思路为主,没提供代码(有需要的话我稍后把链接发上来)感兴趣的可以...
typedef struct{ uint32_t ADC_Mode;//多重ADC模式选择 uint32_t ADC_Prescaler; //ADC预分频 uint32_t ADC_DMAAccessMode; //DMA访问模式 uint32_t ADC_TwoSamplingDelay; //2个采样阶段之间的延迟 }ADC_CommonInitTypeDef; ADC_CommonInitTypeDef用来配置ADC_CCR寄存器的相关参数ADC外设和DMA配置代码: /**...
1)配置通道及参数 如果要控制轮询采样通道,设置Sequencer参数,Rank1,2,3即为采样通道顺序。 2)配置DMA 3)配置引脚 二、配置RCC、SYS、时钟及Project Manager,生成代码。 三、代码部分 需手动开启ADC采集:HAL_ADC_Start_DMA(&hadc1,(uint32_t*)&ADC1_Value,6); ...
STM32ADC多通道转换描述:用ADC连续采集11路模拟信号,并由DMA传输到内存。ADC配置为扫描并且连续转换模式,ADC的时钟配置为12MHZ。在每次转换结束后,由DMA循环将转换的数据传输到内存中。ADC可以连续采集N次求平均值。最后通过串口传输出最后转换的结果。 程序如下: ...
ADC_RegularChannelConfig(ADC1, ADC_Channel_14, 11, ADC_SampleTime_55Cycles5); //SNK_5V // Enable ADC1 ADC_Cmd(ADC1, ENABLE); // 开启ADC的DMA支持(要实现DMA功能,还需独立配置DMA通道等参数)ADC_DMACmd(ADC1, ENABLE); // 下面是ADC自动校准,开机后需执行一次,保证精度 ...
具体配置代码如下: CR1初始化时,直接将所有位清0,因此在配置时可以忽略部分功能的配置,减少了代码量。具体寄存器对应位参考stm32f10x手册。 static void ADCx_Mode_Config(void) { SET_BIT(RCC->APB2ENR,RCC_APB2ENR_ADC1EN);//开ADC1外设时钟
由于采集的ADC数据需要查看,所以本例程采用的是通过串口输出采集的数据,输出到电脑端的串口调试助手。 所以除了基本的时钟、晶振等一些配置,还包含串口配置和ADC配置。 1、配置晶振 步骤1:选择“Pinout&Configuration”; 步骤2:选择“System Core”; 步骤3:选择“RCC”; ...