• 正文
  • 相关推荐
  • 电子产业图谱
申请入驻 产业图谱

STM32G474 ADC无法正常启动转换怎么办

2024/12/17
1107
加入交流群
扫码加入
获取工程师必备礼包
参与热点资讯讨论

提问

void MX_ADC3_Init(void)
{

ADC_MultiModeTypeDef multimode = {0};
ADC_ChannelConfTypeDef sConfig = {0};

hadc3.Instance = ADC3;
hadc3.Init.ClockPrescaler = ADC_CLOCK_SYNC_PCLK_DIV4;
hadc3.Init.Resolution = ADC_RESOLUTION_12B;
hadc3.Init.DataAlign = ADC_DATAALIGN_RIGHT;
hadc3.Init.GainCompensation = 0;
hadc3.Init.ScanConvMode = ADC_SCAN_DISABLE;
hadc3.Init.EOCSelection = ADC_EOC_SINGLE_CONV;
hadc3.Init.LowPowerAutoWait = DISABLE;
hadc3.Init.ContinuousConvMode = ENABLE;
hadc3.Init.NbrOfConversion = 1;
hadc3.Init.DiscontinuousConvMode = DISABLE;
hadc3.Init.ExternalTrigConv = ADC_SOFTWARE_START;
hadc3.Init.ExternalTrigConvEdge = ADC_EXTERNALTRIGCONVEDGE_NONE;
hadc3.Init.DMAContinuousRequests = DISABLE;
hadc3.Init.Overrun = ADC_OVR_DATA_PRESERVED;
hadc3.Init.OversamplingMode = DISABLE;
if (HAL_ADC_Init(&hadc3) != HAL_OK)
{
Error_Handler();
}

/** Configure the ADC multi-mode
*/
multimode.Mode = ADC_MODE_INDEPENDENT;
if (HAL_ADCEx_MultiModeConfigChannel(&hadc3, &multimode) != HAL_OK)
{
Error_Handler();
}

/** Configure Regular Channel
*/
sConfig.Channel = ADC_CHANNEL_1;
sConfig.Rank = ADC_REGULAR_RANK_1;
sConfig.SamplingTime = ADC_SAMPLETIME_92CYCLES_5;
sConfig.SingleDiff = ADC_SINGLE_ENDED;
sConfig.OffsetNumber = ADC_OFFSET_NONE;
sConfig.Offset = 0;
if (HAL_ADC_ConfigChannel(&hadc3, &sConfig) != HAL_OK)
{
Error_Handler();
}
/* USER CODE BEGIN ADC3_Init 2 */

/* USER CODE END ADC3_Init 2 */

}

HAL_ADCEx_Calibration_Start(&hadc3, ADC_SINGLE_ENDED);

HAL_ADC_Start(&hadc3);

仿真时,查看DR寄存器,只有在开始运行仿真时转换一次就不再转换,改成外部TIM触发也只是能转换一次,是哪里配置错误吗?

最新回答

  • 我看你的配置,单个通道,连续转换。估计是误会了,肯定是启动了,不然一个结果也没有。

    可能调试模块没有做更新,你也没有啥操作。

    保持现有 配置的前提下,你这样试试,先软件启动ADC,然后查询接收,再看看结果。

    int main(void)
    {

    。。。。。。
    。。。。。。

    uint8_t i=0;

    HAL_ADC_Start(&hadc1);

    while (1)
    {

    if (HAL_ADC_PollForConversion(&hadc1, 888) != HAL_OK)
    {

    Error_Handler();
    }

    AdcResulti++] = HAL_ADC_GetValue(&hadc1);

    if(i==9) i=0;

    } //while(1)

    } //main

相关推荐

电子产业图谱