uint16_t ADC_Value[3]={0}; uint16_t dong_get_adc(){ //开启ADC1 HAL_ADC_Start(&hadc1); //等待ADC转换完成,超时为100ms HAL_ADC_PollForConversion(&hadc1,100); //判断ADC是否转换成功 if(HAL_IS_BIT_SET(HAL_ADC_GetState(&hadc1),HAL_ADC_STATE_REG_EOC)){ //读取值 return HAL...
通道0-15GPIO口的引脚,ADC1和ADC2的引脚完全相同,ADC3中间有些变化,不过本实操所用芯片无ADC3。标绿...
HAL_ADC_Start_DMA(&hadc1, temp,100);while(1) {for(i =0; i <100; i++) ad += temp[i]; ad /=100; printf("ad = %f\r\n", ad*3.3f/4096); HAL_Delay(1000); } } ADC多通道DMA转换 多通道ADC采集的时候,DMA是会按照通道配置的顺序采集及排列数据。 比如通道顺序是A1 A2,那么对应...
看数据手册,知道三个adc中(adc1,adc2,adc3只有adc1和adc3能用DMA通道。 ADC的时钟不能超过14Mhz, 配置外设到内存(cubeMX自动配置好了),外设adc地址是不变的,而DMA把数据存到存储器的地址是增长的。 Circular循环模式连续搬运adc数据。 在配置DMA时,因为ad的精度是12位,最大也就是4096,而DMA转储adc是一个通...
//初始化ADC DMA 中断 void Adc_Init(void) { //5路ADC1通道,扫描模式,扫描顺序为:通道5、6、8、9、10 GPIO_InitTypeDef GPIO_InitStructure; ADC_CommonInitTypeDef ADC_CommonInitStructure; ADC_InitTypeDef ADC_InitStructure; DMA_InitTypeDef DMA_InitStructure; ...
Enable Analog WatchDog Mode 是否使能模拟看门狗中断。当被 ADC 转换的模拟电压低于低阈值或者高于高阈值时,就会产生中断。 DMA开启。 生成独立的文件。 交流Q_qun:615061293。 或者关注『记帖』,持续更新文章和学习资料! STM32CUBEIDE配置 若需要打印浮点型,需要勾选下面的选项。
使用Platformio平台的libopencm3开发框架来开发STM32G0,以下为多通道ADC与DMA的使用。 1 新建项目 建立adc_dma项目 在PIO的Home页面新建项目,项目名称adc_dma,选择开发板为 MonkeyPi_STM32_G070RB,开发框架选择libopencm3; 项目建立完成后在src目录下新建main.c主程序文件; ...
uint16_t __IO AD_Value[SAMPL_TIMES_PRE_CHANNEL][NUM_OF_CHANNEL]; //ADC转换结果,DMA目标地址 1. 2. 3. 4. 由于主时钟倍频到72MHZ,这里使用ADC1,首先6分频,主要是不需要特别高的采样率 1路、2路ADC信号,是正选信号,需要匹配其频率,这里经过计算的配置如下 ...
*/HAL_ADC_Stop_DMA(&hadc1); } }/* USER CODE END 4 */ 测试结果 输入固定电压进行测试。 Normal下测试结果如下。 若不试用关闭DMA的语句HAL_ADC_Stop_DMA(&hadc1); 会造成数据错乱。 Circular可以下可以一直进行采集,不需要HAL_ADC_Stop_DMA(&hadc1)都可。