DMA+ADC1四路输出,亲测可用,整个的测量一次的时间大约是1.2ms

2019-07-20 22:46发布

这个是我再做实验的时候通过将原子哥的程序进行移植和修改,然后测试可以使用的程序,希望能够帮到有需要的坛友。
友情提示: 此问题已得到解决,问题已经关闭,关闭后问题禁止继续编辑,回答。
12条回答
vegetablebird
2019-07-21 12:05
nashui_sx 发表于 2019-7-12 09:48
定时器触发adc采样然后dma读取,这样能固定采样频率

你要是不固定采样频率,dma读取意义我觉得不大, ...

//获取ADC值
u16 Get_ADC(u8 times)
{  
         u8 i=0;
         u16 temp=0;
         u16 avg=0;
         for(i=0;i<times;i++){
                        ADC_SoftwareStartConvCmd(ADC1,ENABLE); //软件启动ADC
                        ADC_DMACmd(ADC1,ENABLE);//开始ADC_DMA传输         
                         if(DMA_GetFlagStatus(DMA1_FLAG_TC1)!=RESET)//等待通道1传输完成
                         {
                                        delay_ms(10);       
                                        temp+=ADC_ConvertedValue;
                         }
                                DMA_ClearFlag(DMA1_FLAG_TC1);//清除通道1传输完成标志
         }
         avg=temp/times;
         return (float)avg*(3.3/4096);
}
请问这样使用可以吗,ADC为单通道单次转换。这个函数在主函数循环里面被调用

一周热门 更多>