STM32CUBEIDE_STM32F407_HAL_ADC+DMA接收

记录一下使用STM32F407的ADC+DMA的操作与编程步骤:

1、STM32CUBEIDE配置

ADC与DMA不再赘述了。

        a、引脚配置;

        b、功能设置

        配置时钟分频和其他,这里同一个ADC需要RANK设置,注意顺序;

        c、dma开启

2、代码

        main中开启ADC_START_DMA,后面为接收数据区,需要定义一个数组,大小依据自己所需;        

回调函数:利用main运行的adc_num_processing(),每次只进行一个adc,每次读取完成关闭。

void HAL_ADC_ConvCpltCallback(ADC_HandleTypeDef* hadc)
{
    if(hadc->Instance == ADC1){
        ADC1_Flag=1;
        HAL_ADC_Stop_DMA(&hadc1);
    }
    if(hadc->Instance == ADC2){
        ADC2_Flag=1;
        HAL_ADC_Stop_DMA(&hadc2);
    }
}

3、简单滤波

        处理完缓冲区数据后,再次开启DMA,往复操作。

        这里简单作了平均,可以根据实际需求直接处理;

void ADC1_Num_processing_ts(void)
{
    uint16_t P24_2,N18_2;
    uint8_t z=0;

               if(ADC1_Flag==1)
               {
                   ADC1_Flag=0;
                   P24_2=N18_2=0;
                    for(z=0;z<40;)
                    {
                        P24_2+=ADC1_Value_ts[z++];
                        N18_2+=ADC1_Value_ts[z++];
                    }
                    ADC1_CJnum.P24_Current    =P24_2        *3.3/40.95/3*2/2;    ///3/5*10
                    ADC1_CJnum.N18_Current    =N18_2        *3.3/40.95/3/2;

                    HAL_ADC_Start_DMA(&hadc1,(uint32_t*)&ADC1_Value_ts,40);
               }

}

4、实际读取

        读取成功;

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值