久芯网

stm32G030C8T6 ADC读取到的一直是4095

avatar 王东丶 提问时间: 2023-07-20 12:23:54 / 已解决
大佬们,为什么adc读到的值一直是4095,换个通道还是一样,万用表量的值都小于3V,是不是配置有问题

如需获得 stm32G030C8T6 等器件的更多信息,请点击链接或 点击此处 联系在线客服!

7个回答
  • avatar xmshao
    最佳答案
    回答时间: 2023-07-20 12:48:48

    首先硬件线路看看有问题,连接、供电,尤其VDDA之类的脚。然后你先拿ST的Cube库里的例程跑跑,也顺便 熟悉下相关函数。再自己从一个通道开始操作。不难的,加油!

  • avatar 王东丶
    回答时间: 2023-07-20 13:13:53

    void MX_ADC1_Init(void) { ADC_ChannelConfTypeDef sConfig = {0}; hadc1.Instance = ADC1; hadc1.Init.ClockPrescaler = ADC_CLOCK_SYNC_PCLK_DIV4; hadc1.Init.Resolution = ADC_RESOLUTION_12B; hadc1.Init.DataAlign = ADC_DATAALIGN_RIGHT; hadc1.Init.ScanConvMode = ADC_SCAN_SEQ_FIXED; hadc1.Init.EOCSelection = ADC_EOC_SINGLE_CONV; hadc1.Init.LowPowerAutoWait = DISABLE; hadc1.Init.LowPowerAutoPowerOff = DISABLE; hadc1.Init.ContinuousConvMode = DISABLE; hadc1.Init.NbrOfConversion = 1; hadc1.Init.DiscontinuousConvMode = DISABLE; hadc1.Init.ExternalTrigConv = ADC_SOFTWARE_START; hadc1.Init.ExternalTrigConvEdge = ADC_EXTERNALTRIGCONVEDGE_NONE; hadc1.Init.DMAContinuousRequests = DISABLE; hadc1.Init.Overrun = ADC_OVR_DATA_PRESERVED; hadc1.Init.SamplingTimeCommon1 = ADC_SAMPLETIME_12CYCLES_5; hadc1.Init.OversamplingMode = DISABLE; hadc1.Init.TriggerFrequencyMode = ADC_TRIGGER_FREQ_HIGH; if (HAL_ADC_Init(&hadc1) != HAL_OK) { Error_Handler(); } sConfig.Channel = ADC_CHANNEL_11; sConfig.Rank = ADC_RANK_CHANNEL_NUMBER; if (HAL_ADC_ConfigChannel(&hadc1, &sConfig) != HAL_OK) { Error_Handler(); } }

  • avatar 王东丶
    回答时间: 2023-07-20 13:32:11

    void HAL_ADC_MspInit(ADC_HandleTypeDef* adcHandle) { GPIO_InitTypeDef GPIO_InitStruct = {0}; RCC_PeriphCLKInitTypeDef PeriphClkInit = {0}; if(adcHandle->Instance==ADC1) { PeriphClkInit.PeriphClockSelection = RCC_PERIPHCLK_ADC; PeriphClkInit.AdcClockSelection = RCC_ADCCLKSOURCE_SYSCLK; if (HAL_RCCEx_PeriphCLKConfig(&PeriphClkInit) != HAL_OK) { Error_Handler(); } __HAL_RCC_ADC_CLK_ENABLE(); __HAL_RCC_GPIOB_CLK_ENABLE(); GPIO_InitStruct.Pin = GPIO_PIN_10; GPIO_InitStruct.Mode = GPIO_MODE_ANALOG; GPIO_InitStruct.Pull = GPIO_NOPULL; HAL_GPIO_Init(GPIOB, &GPIO_InitStruct); } } void HAL_ADC_MspDeInit(ADC_HandleTypeDef* adcHandle) { if(adcHandle->Instance==ADC1) { __HAL_RCC_ADC_CLK_DISABLE(); HAL_GPIO_DeInit(GPIOB, GPIO_PIN_10); } }

  • avatar 王东丶
    回答时间: 2023-07-20 14:03:41

    int main(void) { /* MCU Configuration--------------------------------------------------------*/ /* Reset of all peripherals, Initializes the Flash interface and the Systick. */ HAL_Init(); /* USER CODE BEGIN Init */ /* USER CODE END Init */ /* Configure the system clock */ SystemClock_Config(); /* USER CODE BEGIN SysInit */ /* USER CODE END SysInit */ /* Initialize all configured peripherals */ MX_GPIO_Init(); MX_ADC1_Init(); MX_USART1_UART_Init(); MX_USART2_UART_Init(); /* USER CODE BEGIN 2 */ HAL_ADC_Start(&hadc1); while (1) { printf("VREFINT_DATA:%d \r\n",HAL_ADC_GetValue(&hadc1)); HAL_Delay(500); } }

  • avatar yklstudent
    回答时间: 2023-07-20 14:33:43

    mark,直接参考官方demo

  • avatar 王东丶
    回答时间: 2023-07-20 14:55:08
    yklstudent 发表于 2022-8-22 20:24
    mark,直接参考官方demo

    好的 我试试

  • avatar 王东丶
    回答时间: 2023-07-20 15:14:54
    xmshao 发表于 2022-8-23 09:52
    首先硬件线路看看有问题,连接、供电,尤其VDDA之类的脚。然后你先拿ST的Cube库里的例程跑跑,也顺便 熟悉 ...

    好的,谢谢

会员中心 微信客服
客服
回到顶部