STM32
直播中

王波

7年用户 1368经验值
私信 关注
[问答]

如何对STM32cubemx的ADC进行配置呢

DMA的中断方式有哪几种呢?
如何对STM32cubemx的ADC进行配置呢?



回帖(1)

宫昊

2021-12-1 13:57:59
STM32_H750_ADC总结

DMA中断方式

STM32cubemx的一些基础配置
注意H750引脚,很多引脚有后缀例如PC3_C(不是PC3)















ADC和DMA都不是连续模式
初始化开启DMA传输

HAL_ADC_Start_DMA(&hadc3, (uint32_t*)&ADC_ConvertedValue, 1);


回调函数将flag变量u置1


void HAL_ADC_ConvCpltCallback(ADC_HandleTypeDef* AdcHandle)
{
        u=1;
        y++;
}


主函数


                x++;
                printf("x=%drn",x);
                if(x%5==0)
                {HAL_ADC_Start_DMA(&hadc3, (uint32_t*)&ADC_ConvertedValue, 1);}
                HAL_Delay(1000);
                if(u==1)
                {
                ADC_vol = (float)(ADC_ConvertedValue*3.3/65536);
                printf("y=%drn",y);
                u=0;
    printf("rn The current AD value = 0x%04X rn", ADC_ConvertedValue);
    printf("rn The current AD value = %f V rn", ADC_vol);
                }


主函数每5s开启一次ADC_DMA
判断flag变量u,打印adc转换数值
DMA部分选择DMA,不要选择BDMA(网上查了下BDMA只能用在D3域)


连续转换模式,将ADC连续转换打开,DMA循环打开


HAL_ADC_Start_DMA(&hadc3, (uint32_t*)&ADC_ConvertedValue, 1);
  while (1)
  {
                HAL_Delay(1000);
                if(u==1)
                {
                ADC_vol = (float)(ADC_ConvertedValue*3.3/65536);
                u=0;
    printf("rn The current AD value = 0x%04X rn", ADC_ConvertedValue);
    printf("rn The current AD value = %f V rn", ADC_vol);
                }
        }


ADC 和DMA一直在转换,只需要打印电压值。


中断方式
使用下面两个函数开启和关闭ADC中断


HAL_ADC_Start_IT(&ADC_Handle);
HAL_ADC_Stop_IT(&ADC_Handle);


多通道DMA的ADC转换和单通道的区别是()


HAL_ADC_Start_DMA(&hadc1, (uint32_t *)ADC_ConvertedValue, 4);


双重ADC单通道 交替采集
双重 ADC 交替模式,只适用于 ADC1 和 ADC2。双重 ADC 交替模式是针对同一通道的使用两个 ADC(ADC1 作为主 ADC, ADC2 作为从 ADC)交叉采集,就是在 ADC1 采样完等几个时钟周期后 ADC2 开始采样,此时 ADC1 处在转换阶段,当ADC2 采样完成再等几个时钟周期后 ADC1 就进行采样,充分利用转换阶段时间达到增快采样速度的效果


HAL_ADCEx_MultiModeStart_DMA(&ADC_Handle, (uint32_t*)&ADC_ConvertedValue, 1);//开启交替采集













使用 ADC_MultiModeTypeDef 结构体变量ADC_multimode 来配置 ADC 为双重 ADC 交替模式、 3 个周期的采样延迟、数据格式选择 32 位数据格式。(DMA设置为32位)
举报

更多回帖

发帖
×
20
完善资料,
赚取积分