[STM32F1] STM32 adc 多通道单次采集

[复制链接]
931|15
 楼主| bqyj 发表于 2021-4-6 20:24 | 显示全部楼层 |阅读模式
我在使用stm32ADC的时候,是用的多通道连续采集,DMA传输,但是现在我想不使用DMA,在我想读数据的时候才去读ADC的数据,单通道我明白,多通道的怎么去选择通道呢?
xxrs 发表于 2021-4-6 20:25 | 显示全部楼层
采集的程序?
 楼主| bqyj 发表于 2021-4-6 20:27 | 显示全部楼层

u16 GetVolt()
{
  for(i = 0; i<100; i++)
  {
    ADC_SoftwareStartConvCmd(ADC1,ENABLE);
    while(!ADC_GetFlagStatus(ADC1,ADC_FLAG_EOC));
    advalue +=(u16)ADC_GetConversionValue(ADC1);
  }
  advalue = advalue >>4;
  advalue = advalue *3288/4096;
}
 楼主| bqyj 发表于 2021-4-6 20:29 | 显示全部楼层
这是单次采集的程序,但是我不知道它到底采集的是哪个通道,
 楼主| bqyj 发表于 2021-4-6 20:31 | 显示全部楼层
如果我想获取两个不同的通道,该怎么去写呢?
liuzaiy 发表于 2021-4-6 20:33 | 显示全部楼层

//获得ADC值
//ch:通道值 0~3
u16 Get_Adc(u8 ch)   
{
          //设置指定ADC的规则组通道,一个序列,采样时间
        ADC_RegularChannelConfig(ADC1, ch, 1, ADC_SampleTime_239Cycles5 );        //ADC1,ADC通道,采样时间为239.5周期                                      
  
        ADC_SoftwareStartConvCmd(ADC1, ENABLE);                //使能指定的ADC1的软件转换启动功能        
         
        while(!ADC_GetFlagStatus(ADC1, ADC_FLAG_EOC ));//等待转换结束

        return ADC_GetConversionValue(ADC1);        //返回最近一次ADC1规则组的转换结果
}
lizye 发表于 2021-4-6 20:35 | 显示全部楼层
用普通模式试试看
liliang9554 发表于 2021-4-6 20:37 | 显示全部楼层
用别的模式啊
jiajs 发表于 2021-4-6 20:39 | 显示全部楼层
改成普通的不就行了吗
wyjie 发表于 2021-4-6 20:45 | 显示全部楼层
在寄存器里有啊
 楼主| bqyj 发表于 2021-4-6 20:48 | 显示全部楼层
哦,那我就知道怎么回事了,多谢大家
wowu 发表于 2021-5-6 12:11 | 显示全部楼层
没有用过dma的方式啊
xiaoqizi 发表于 2021-5-6 12:13 | 显示全部楼层
需要配置寄存器的
木木guainv 发表于 2021-5-6 12:14 | 显示全部楼层
用cube配置程序试试看
磨砂 发表于 2021-5-6 12:15 | 显示全部楼层
首先要确定哪个通道
晓伍 发表于 2021-5-6 12:16 | 显示全部楼层
好像我记得需要配置通道号和相应的顺序的
您需要登录后才可以回帖 登录 | 注册

本版积分规则

390

主题

4526

帖子

2

粉丝
快速回复 在线客服 返回列表 返回顶部