• 已解决 73482 个问题
  • 已帮助 5993 位优秀工程师

STM32L0 多通道ADC采集的数据全一样

zzzqiu 2019-10-22 浏览量:3170
求助!stm32L0系列三路ADC采集数据 代码如下,还请高人指点!
//ADC功能配置
void ADCx_Init1(void)       
{
hadc1.Instance->CHSELR = 0;       
ADC_ChannelConfTypeDef sConfig1;
HAL_ADC_MspInit1(&hadc1);
hadc1.Instance=ADCx;
hadc1.Init.ClockPrescaler=ADC_CLOCK_SYNC_PCLK_DIV2;//ADC时钟分频,小于16MHz
hadc1.Init.ContinuousConvMode=DISABLE;//非连续模式
hadc1.Init.DataAlign=ADC_DATAALIGN_RIGHT;//数据右对齐
hadc1.Init.EOCSelection=ADC_EOC_SINGLE_CONV;
hadc1.Init.DMAContinuousRequests=DISABLE;
hadc1.Init.ExternalTrigConv=ADC_SOFTWARE_START;//软件触发
hadc1.Init.ExternalTrigConvEdge=ADC_EXTERNALTRIGCONVEDGE_NONE;
hadc1.Init.LowPowerAutoPowerOff=DISABLE;//低功耗
hadc1.Init.LowPowerAutoWait=DISABLE;
hadc1.Init.LowPowerFrequencyMode=DISABLE;
hadc1.Init.Overrun=DISABLE;
hadc1.Init.Resolution=ADC_RESOLUTION_12B;       
hadc1.Init.SamplingTime=ADC_SAMPLETIME_3CYCLES_5;//采样时间
hadc1.Init.OversamplingMode=ADC_OVR_DATA_PRESERVED;
hadc1.Init.ScanConvMode=ADC_SCAN_DIRECTION_FORWARD;
HAL_ADC_Init(&hadc1);

sConfig1.Channel      = ADCx_CHANNEL4;
sConfig1.Rank         = ADC_RANK_CHANNEL_NUMBER;
HAL_ADC_ConfigChannel(&hadc1 &sConfig1);
}

void ADCx_Init2(void)       
{
hadc2.Instance->CHSELR = 0;       
ADC_ChannelConfTypeDef sConfig2;
HAL_ADC_MspInit2(&hadc2);
hadc2.Instance=ADCx;
hadc2.Init.ClockPrescaler=ADC_CLOCK_SYNC_PCLK_DIV2;//ADC时钟分频,小于16MHz?
hadc2.Init.ContinuousConvMode=DISABLE;//非连续模式
hadc2.Init.DataAlign=ADC_DATAALIGN_RIGHT;//数据右对齐
hadc2.Init.EOCSelection=ADC_EOC_SINGLE_CONV;
hadc2.Init.DMAContinuousRequests=DISABLE;
hadc2.Init.ExternalTrigConv=ADC_SOFTWARE_START;//软件触发
hadc2.Init.ExternalTrigConvEdge=ADC_EXTERNALTRIGCONVEDGE_NONE;
hadc2.Init.LowPowerAutoPowerOff=DISABLE;//低功耗
hadc2.Init.LowPowerAutoWait=DISABLE;
hadc2.Init.LowPowerFrequencyMode=DISABLE;
hadc2.Init.Overrun=DISABLE;
hadc2.Init.Resolution=ADC_RESOLUTION_12B;       
hadc2.Init.SamplingTime=ADC_SAMPLETIME_3CYCLES_5;//采样时间
hadc2.Init.OversamplingMode=ADC_OVR_DATA_PRESERVED;
hadc2.Init.ScanConvMode=ADC_SCAN_DIRECTION_FORWARD;
HAL_ADC_Init(&hadc2);

sConfig2.Channel      = ADCx_CHANNEL3;
sConfig2.Rank         = ADC_RANK_CHANNEL_NUMBER;
HAL_ADC_ConfigChannel(&hadc2 &sConfig2);
}

void ADCx_Init3(void)       
{
hadc3.Instance->CHSELR = 0;       
ADC_ChannelConfTypeDef sConfig3;
HAL_ADC_MspInit3(&hadc3);
hadc3.Instance=ADCx;
hadc3.Init.ClockPrescaler=ADC_CLOCK_SYNC_PCLK_DIV2;//ADC时钟分频,小于16MHz
hadc3.Init.ContinuousConvMode=DISABLE;//非连续模式
hadc3.Init.DataAlign=ADC_DATAALIGN_RIGHT;//数据右对齐
hadc3.Init.EOCSelection=ADC_EOC_SINGLE_CONV;
hadc3.Init.DMAContinuousRequests=DISABLE;
hadc3.Init.ExternalTrigConv=ADC_SOFTWARE_START;//软件触发
hadc3.Init.ExternalTrigConvEdge=ADC_EXTERNALTRIGCONVEDGE_NONE;
hadc3.Init.LowPowerAutoPowerOff=DISABLE;//低功耗
hadc3.Init.LowPowerAutoWait=DISABLE;
hadc3.Init.LowPowerFrequencyMode=DISABLE;
hadc3.Init.Overrun=DISABLE;
hadc3.Init.Resolution=ADC_RESOLUTION_12B;       
hadc3.Init.SamplingTime=ADC_SAMPLETIME_3CYCLES_5;//采样时间
hadc3.Init.OversamplingMode=ADC_OVR_DATA_PRESERVED;
hadc3.Init.ScanConvMode=ADC_SCAN_DIRECTION_FORWARD;
HAL_ADC_Init(&hadc3);

sConfig3.Channel      = ADCx_CHANNEL2;
sConfig3.Rank         = ADC_RANK_CHANNEL_NUMBER;
HAL_ADC_ConfigChannel(&hadc3 &sConfig3);
}

void HAL_ADC_MspDeInit1(ADC_HandleTypeDef* hadc1)
{
  if(hadc1->Instance==ADCx)
  {
    /@@* 禁用ADC外设时钟 */
    ADCx_RCC_CLK_DISABLE();

    /@@* AD转换通道引脚反初始化 */
    HAL_GPIO_DeInit(ADCx_GPIO_PORT ADCx_GPIO_PIN4);


  }
}
void HAL_ADC_MspDeInit2(ADC_HandleTypeDef* hadc2)
{
  if(hadc2->Instance==ADCx)
  {
    /@@* 禁用ADC外设时钟 */
    ADCx_RCC_CLK_DISABLE();

    /@@* AD转换通道引脚反初始化 */
    HAL_GPIO_DeInit(ADCx_GPIO_PORT ADCx_GPIO_PIN3);


  }
}
void HAL_ADC_MspDeInit3(ADC_HandleTypeDef* hadc3)
{
  if(hadc3->Instance==ADCx)
  {
    /@@* 禁用ADC外设时钟 */
    ADCx_RCC_CLK_DISABLE();

    /@@* AD转换通道引脚反初始化 */
    HAL_GPIO_DeInit(ADCx_GPIO_PORT ADCx_GPIO_PIN2);


  }
}


0 0 收起

我来回答

上传资料:
选择文件 文件大小不超过15M(格式支持:doc、ppt、xls、pdf、zip、rar、txt)
最佳答案
  • 1、从硬件上,看一下三路信号有没有关联,输入的电压是不是一样,有没有连接有效的采样电压

    2、从软件上,每一个引脚的复用功能是不是打开,读取时的结构体是不是正确的。

    3、使用Cubemx生成一个工程试下吧,这么生成的初始化都是对的,

    • 发布于 2019-11-19
    • 举报
    • 评论 0
    • 0
    • 0

其他答案 数量:0

相关问题

问题达人换一批

STM32L0 多通道ADC采集的数据全一样