你的浏览器版本过低,可能导致网站不能正常访问!
为了你能正常使用网站功能,请使用这些浏览器。

求助 STM32F302RC ADC2的问题

[复制链接]
dldz525 提问时间:2016-11-20 16:39 /
本人接触stm32f 时间不长,在一个项目上使用了stm32f302rc这个芯片,初始化代码用的是STM32CubeMX生成的。ADC1、ADC2各有4路模拟输入。目前遇到的问题是ADC1采样正常,但ADC2采样不正常,输入0V时ADC2转换始终不为零,折合电压大概有0.9V左右(3.3V基准)。这个问题已经困扰了几天了,还没有解决。求各位高人帮忙看看,如何解决。
谢谢!!
以下是初始化代码:
  1. ADC_HandleTypeDef hadc1;
  2. ADC_HandleTypeDef hadc2;
  3. ADC_MultiModeTypeDef multi;
  4. DMA_HandleTypeDef hdma_adc1;
  5. DMA_HandleTypeDef hdma_adc2;

  6. /* ADC1 init function */
  7. void MX_ADC1_Init(void)
  8. {
  9.   ADC_ChannelConfTypeDef sConfig;
  10.         
  11.         /**Common config */
  12.   hadc1.Instance = ADC1;
  13.   hadc1.Init.ClockPrescaler = ADC_CLOCK_SYNC_PCLK_DIV1;
  14.   hadc1.Init.Resolution = ADC_RESOLUTION_12B;
  15.   hadc1.Init.ScanConvMode = ADC_SCAN_ENABLE;
  16.   hadc1.Init.ContinuousConvMode = DISABLE;
  17.   hadc1.Init.DiscontinuousConvMode = DISABLE;
  18.   hadc1.Init.ExternalTrigConvEdge = ADC_EXTERNALTRIGCONVEDGE_RISING;
  19.   hadc1.Init.ExternalTrigConv = ADC_EXTERNALTRIGCONV_T4_TRGO;
  20.   hadc1.Init.DataAlign = ADC_DATAALIGN_RIGHT;
  21.   hadc1.Init.NbrOfConversion = 4;
  22.   hadc1.Init.DMAContinuousRequests =DISABLE;
  23.   hadc1.Init.EOCSelection = ADC_EOC_SINGLE_CONV;
  24.   hadc1.Init.LowPowerAutoWait = DISABLE;
  25.   hadc1.Init.Overrun = ADC_OVR_DATA_OVERWRITTEN;
  26.   if (HAL_ADC_Init(&hadc1) != HAL_OK)
  27.   {
  28.     Error_Handler();
  29.   }
  30.         
  31.         /**Configure Regular Channel */

  32.   sConfig.SingleDiff = ADC_SINGLE_ENDED;
  33.   sConfig.SamplingTime = ADC_SAMPLETIME_19CYCLES_5;
  34.   sConfig.OffsetNumber = ADC_OFFSET_NONE;
  35.   sConfig.Offset = 0;

  36.         sConfig.Channel = ADC_CHANNEL_1;
  37.   sConfig.Rank = 1;
  38.   if (HAL_ADC_ConfigChannel(&hadc1, &sConfig) != HAL_OK)
  39.   {
  40.     Error_Handler();
  41.   }
  42.                 /**Configure Regular Channel*/
  43.   sConfig.Channel = ADC_CHANNEL_2;
  44.   sConfig.Rank = 2;
  45.   if (HAL_ADC_ConfigChannel(&hadc1, &sConfig) != HAL_OK)
  46.   {
  47.     Error_Handler();
  48.   }
  49.                 /**Configure Regular Channel*/
  50.   sConfig.Channel = ADC_CHANNEL_3;
  51.   sConfig.Rank = 3;
  52.   if (HAL_ADC_ConfigChannel(&hadc1, &sConfig) != HAL_OK)
  53.   {
  54.     Error_Handler();
  55.   }
  56.                 /**Configure Regular Channel*/
  57.   sConfig.Channel = ADC_CHANNEL_4;
  58.   sConfig.Rank = 4;
  59.   if (HAL_ADC_ConfigChannel(&hadc1, &sConfig) != HAL_OK)
  60.   {
  61.     Error_Handler();
  62.   }
  63.         
  64.   HAL_ADCEx_Calibration_Start(&hadc1, ADC_SINGLE_ENDED);
  65.                
  66.   HAL_ADC_Start_DMA(&hadc1, (U32*)ADC1_ConvertedValue,ADC_SampleCount);

  67. }

  68. /* ADC2 init function */
  69. void MX_ADC2_Init(void)
  70. {
  71.   ADC_ChannelConfTypeDef sConfig;
  72.         
  73.         /**Common config */
  74.   hadc2.Instance = ADC2;
  75.   hadc2.Init.ClockPrescaler = ADC_CLOCK_SYNC_PCLK_DIV1;
  76.   hadc2.Init.Resolution = ADC_RESOLUTION_12B;
  77.   hadc2.Init.ScanConvMode = ADC_SCAN_ENABLE;
  78.   hadc2.Init.ContinuousConvMode = DISABLE;
  79.   hadc2.Init.DiscontinuousConvMode = DISABLE;
  80.   hadc2.Init.ExternalTrigConvEdge = ADC_EXTERNALTRIGCONVEDGE_RISING;
  81.   hadc2.Init.ExternalTrigConv = ADC_EXTERNALTRIGCONV_T4_TRGO;
  82.   hadc2.Init.DataAlign = ADC_DATAALIGN_RIGHT;
  83.   hadc2.Init.NbrOfConversion = 4;
  84.   hadc2.Init.DMAContinuousRequests = DISABLE;
  85.   hadc2.Init.EOCSelection = ADC_EOC_SINGLE_CONV;
  86.   hadc2.Init.LowPowerAutoWait = DISABLE;
  87.   hadc2.Init.Overrun = ADC_OVR_DATA_OVERWRITTEN;
  88.   if (HAL_ADC_Init(&hadc2) != HAL_OK)
  89.   {
  90.     Error_Handler();
  91.   }

  92.         /**Configure Regular Channel*/

  93.   sConfig.SingleDiff = ADC_SINGLE_ENDED;
  94.   sConfig.SamplingTime = ADC_SAMPLETIME_19CYCLES_5;
  95.   sConfig.OffsetNumber = ADC_OFFSET_NONE;
  96.   sConfig.Offset = 0;
  97.         
  98.         sConfig.Channel = ADC_CHANNEL_6;
  99.   sConfig.Rank = 1;
  100.   if (HAL_ADC_ConfigChannel(&hadc2, &sConfig) != HAL_OK)
  101.   {
  102.     Error_Handler();
  103.   }
  104.         
  105.   /**Configure Regular Channel */
  106.   sConfig.Channel = ADC_CHANNEL_7;
  107.   sConfig.Rank = 2;
  108.   if (HAL_ADC_ConfigChannel(&hadc2, &sConfig) != HAL_OK)
  109.   {
  110.     Error_Handler();
  111.   }
  112.     /**Configure Regular Channel*/
  113.   sConfig.Channel = ADC_CHANNEL_8;
  114.   sConfig.Rank = 3;
  115.   if (HAL_ADC_ConfigChannel(&hadc2, &sConfig) != HAL_OK)
  116.   {
  117.     Error_Handler();
  118.   }
  119.     /**Configure Regular Channel*/

  120.   sConfig.Channel = ADC_CHANNEL_9;
  121.   sConfig.Rank = 4;
  122.   if (HAL_ADC_ConfigChannel(&hadc2, &sConfig) != HAL_OK)
  123.   {
  124.     Error_Handler();
  125.   }
  126.   multi.Mode = ADC_MODE_INDEPENDENT;
  127.   multi.DMAAccessMode = ADC_DMAACCESSMODE_DISABLED;
  128.   if (HAL_ADCEx_MultiModeConfigChannel(&hadc2, &multi)!=HAL_OK)
  129.   {
  130.     Error_Handler();
  131.   }      
  132.         
  133.   HAL_ADCEx_Calibration_Start(&hadc2, ADC_SINGLE_ENDED);
  134.         
  135.   HAL_ADC_Start_DMA(&hadc2, (U32*)ADC2_ConvertedValue, ADC_SampleCount);
  136. }

  137. static uint32_t HAL_RCC_ADC12_CLK_ENABLED=0;

  138. void HAL_ADC_MspInit(ADC_HandleTypeDef* adcHandle)
  139. {

  140.   GPIO_InitTypeDef GPIO_InitStruct;
  141.   if(adcHandle->Instance==ADC1)
  142.   {
  143.     /* Peripheral clock enable */
  144.     HAL_RCC_ADC12_CLK_ENABLED++;
  145.     if(HAL_RCC_ADC12_CLK_ENABLED==1){
  146.       __HAL_RCC_ADC12_CLK_ENABLE();
  147.     }

  148.     /**ADC1 GPIO Configuration   
  149.     PA0     ------> ADC1_IN1
  150.     PA1     ------> ADC1_IN2
  151.     PA2     ------> ADC1_IN3
  152.     PA3     ------> ADC1_IN4
  153.     */
  154.     GPIO_InitStruct.Pin = GPIO_PIN_0|GPIO_PIN_1|GPIO_PIN_2|GPIO_PIN_3;
  155.     GPIO_InitStruct.Mode = GPIO_MODE_ANALOG;
  156.     GPIO_InitStruct.Pull = GPIO_NOPULL;
  157.     HAL_GPIO_Init(GPIOA, &GPIO_InitStruct);

  158.     /* Peripheral DMA init*/

  159.     hdma_adc1.Instance = DMA1_Channel1;
  160.     hdma_adc1.Init.Direction = DMA_PERIPH_TO_MEMORY;
  161.     hdma_adc1.Init.PeriphInc = DMA_PINC_DISABLE;
  162.     hdma_adc1.Init.MemInc = DMA_MINC_ENABLE;
  163.     hdma_adc1.Init.PeriphDataAlignment = DMA_PDATAALIGN_HALFWORD;
  164.     hdma_adc1.Init.MemDataAlignment = DMA_MDATAALIGN_HALFWORD;
  165.     hdma_adc1.Init.Mode = DMA_CIRCULAR;//DMA_NORMAL;
  166.     hdma_adc1.Init.Priority = DMA_PRIORITY_MEDIUM;
  167.     if (HAL_DMA_Init(&hdma_adc1) != HAL_OK)
  168.     {
  169.       Error_Handler();
  170.     }

  171.     __HAL_LINKDMA(adcHandle,DMA_Handle,hdma_adc1);

  172.     /* Peripheral interrupt init */
  173.     //HAL_NVIC_SetPriority(ADC1_2_IRQn, 0, 0);
  174.     //HAL_NVIC_EnableIRQ(ADC1_2_IRQn);
  175.   }
  176.   else if(adcHandle->Instance==ADC2)
  177.   {
  178.     /* Peripheral clock enable */
  179.     HAL_RCC_ADC12_CLK_ENABLED++;
  180.     if(HAL_RCC_ADC12_CLK_ENABLED==1){
  181.       __HAL_RCC_ADC12_CLK_ENABLE();
  182.     }

  183.     /**ADC2 GPIO Configuration   
  184.     PC0     ------> ADC2_IN6
  185.     PC1     ------> ADC2_IN7
  186.     PC2     ------> ADC2_IN8
  187.     PC3     ------> ADC2_IN9
  188.     */
  189.     GPIO_InitStruct.Pin = GPIO_PIN_0|GPIO_PIN_1|GPIO_PIN_2|GPIO_PIN_3;
  190.     GPIO_InitStruct.Mode = GPIO_MODE_ANALOG;
  191.     GPIO_InitStruct.Pull = GPIO_NOPULL;
  192.     HAL_GPIO_Init(GPIOC, &GPIO_InitStruct);
  193.                
  194.     /* Peripheral DMA init*/

  195.     hdma_adc2.Instance = DMA2_Channel1;
  196.     hdma_adc2.Init.Direction = DMA_PERIPH_TO_MEMORY;
  197.     hdma_adc2.Init.PeriphInc = DMA_PINC_DISABLE;
  198.     hdma_adc2.Init.MemInc = DMA_MINC_ENABLE;
  199.     hdma_adc2.Init.PeriphDataAlignment = DMA_PDATAALIGN_HALFWORD;
  200.     hdma_adc2.Init.MemDataAlignment = DMA_MDATAALIGN_HALFWORD;
  201.     hdma_adc2.Init.Mode = DMA_CIRCULAR;//DMA_NORMAL;
  202.     hdma_adc2.Init.Priority = DMA_PRIORITY_MEDIUM;
  203.     if (HAL_DMA_Init(&hdma_adc2) != HAL_OK)
  204.     {
  205.       Error_Handler();
  206.     }

  207.     __HAL_LINKDMA(adcHandle,DMA_Handle,hdma_adc2);

  208.     /* Peripheral interrupt init */
  209.     //HAL_NVIC_SetPriority(ADC1_2_IRQn, 0, 0);
  210.     //HAL_NVIC_EnableIRQ(ADC1_2_IRQn);
  211.   }
  212. }
复制代码



<
收藏 1 评论13 发布时间:2016-11-20 16:39

举报

13个回答
xuezhimeng2010 回答时间:2016-11-22 09:45:13
首先楼主这代码不是cube完全自动生成的,也就是说你自己修改过,至于你修改了哪部分就不得而知了。
另外你adc2为什么会有multimode的设置,如果是配置的independent模式的话,应该是没有双adc模式的配置的。
我没有302的片子 ,只是根据经验配置了一下,你可以试试我生成的代码;
  1. /* Includes ------------------------------------------------------------------*/
  2. #include "adc.h"

  3. #include "gpio.h"
  4. #include "dma.h"

  5. /* USER CODE BEGIN 0 */

  6. /* USER CODE END 0 */

  7. ADC_HandleTypeDef hadc1;
  8. ADC_HandleTypeDef hadc2;
  9. DMA_HandleTypeDef hdma_adc1;
  10. DMA_HandleTypeDef hdma_adc2;

  11. /* ADC1 init function */
  12. void MX_ADC1_Init(void)
  13. {
  14.   ADC_ChannelConfTypeDef sConfig;

  15.     /**Common config
  16.     */
  17.   hadc1.Instance = ADC1;
  18.   hadc1.Init.ClockPrescaler = ADC_CLOCK_ASYNC_DIV1;
  19.   hadc1.Init.Resolution = ADC_RESOLUTION_12B;
  20.   hadc1.Init.ScanConvMode = ADC_SCAN_ENABLE;
  21.   hadc1.Init.ContinuousConvMode = DISABLE;
  22.   hadc1.Init.DiscontinuousConvMode = DISABLE;
  23.   hadc1.Init.ExternalTrigConvEdge = ADC_EXTERNALTRIGCONVEDGE_RISING;
  24.   hadc1.Init.ExternalTrigConv = ADC_EXTERNALTRIGCONV_T4_TRGO;
  25.   hadc1.Init.DataAlign = ADC_DATAALIGN_RIGHT;
  26.   hadc1.Init.NbrOfConversion = 4;
  27.   hadc1.Init.DMAContinuousRequests = DISABLE;
  28.   hadc1.Init.EOCSelection = ADC_EOC_SEQ_CONV;
  29.   hadc1.Init.LowPowerAutoWait = DISABLE;
  30.   hadc1.Init.Overrun = ADC_OVR_DATA_OVERWRITTEN;
  31.   if (HAL_ADC_Init(&hadc1) != HAL_OK)
  32.   {
  33.     Error_Handler();
  34.   }

  35.     /**Configure Regular Channel
  36.     */
  37.   sConfig.Channel = ADC_CHANNEL_1;
  38.   sConfig.Rank = 1;
  39.   sConfig.SingleDiff = ADC_SINGLE_ENDED;
  40.   sConfig.SamplingTime = ADC_SAMPLETIME_1CYCLE_5;
  41.   sConfig.OffsetNumber = ADC_OFFSET_NONE;
  42.   sConfig.Offset = 0;
  43.   if (HAL_ADC_ConfigChannel(&hadc1, &sConfig) != HAL_OK)
  44.   {
  45.     Error_Handler();
  46.   }

  47.     /**Configure Regular Channel
  48.     */
  49.   sConfig.Channel = ADC_CHANNEL_2;
  50.   sConfig.Rank = 2;
  51.   if (HAL_ADC_ConfigChannel(&hadc1, &sConfig) != HAL_OK)
  52.   {
  53.     Error_Handler();
  54.   }

  55.     /**Configure Regular Channel
  56.     */
  57.   sConfig.Channel = ADC_CHANNEL_3;
  58.   sConfig.Rank = 3;
  59.   if (HAL_ADC_ConfigChannel(&hadc1, &sConfig) != HAL_OK)
  60.   {
  61.     Error_Handler();
  62.   }

  63.     /**Configure Regular Channel
  64.     */
  65.   sConfig.Channel = ADC_CHANNEL_4;
  66.   sConfig.Rank = 4;
  67.   if (HAL_ADC_ConfigChannel(&hadc1, &sConfig) != HAL_OK)
  68.   {
  69.     Error_Handler();
  70.   }

  71. }
  72. /* ADC2 init function */
  73. void MX_ADC2_Init(void)
  74. {
  75.   ADC_ChannelConfTypeDef sConfig;

  76.     /**Common config
  77.     */
  78.   hadc2.Instance = ADC2;
  79.   hadc2.Init.ClockPrescaler = ADC_CLOCK_ASYNC_DIV1;
  80.   hadc2.Init.Resolution = ADC_RESOLUTION_12B;
  81.   hadc2.Init.ScanConvMode = ADC_SCAN_ENABLE;
  82.   hadc2.Init.ContinuousConvMode = DISABLE;
  83.   hadc2.Init.DiscontinuousConvMode = DISABLE;
  84.   hadc2.Init.ExternalTrigConvEdge = ADC_EXTERNALTRIGCONVEDGE_RISING;
  85.   hadc2.Init.ExternalTrigConv = ADC_EXTERNALTRIGCONV_T4_TRGO;
  86.   hadc2.Init.DataAlign = ADC_DATAALIGN_RIGHT;
  87.   hadc2.Init.NbrOfConversion = 4;
  88.   hadc2.Init.DMAContinuousRequests = DISABLE;
  89.   hadc2.Init.EOCSelection = ADC_EOC_SEQ_CONV;
  90.   hadc2.Init.LowPowerAutoWait = DISABLE;
  91.   hadc2.Init.Overrun = ADC_OVR_DATA_OVERWRITTEN;
  92.   if (HAL_ADC_Init(&hadc2) != HAL_OK)
  93.   {
  94.     Error_Handler();
  95.   }

  96.     /**Configure Regular Channel
  97.     */
  98.   sConfig.Channel = ADC_CHANNEL_6;
  99.   sConfig.Rank = 1;
  100.   sConfig.SingleDiff = ADC_SINGLE_ENDED;
  101.   sConfig.SamplingTime = ADC_SAMPLETIME_1CYCLE_5;
  102.   sConfig.OffsetNumber = ADC_OFFSET_NONE;
  103.   sConfig.Offset = 0;
  104.   if (HAL_ADC_ConfigChannel(&hadc2, &sConfig) != HAL_OK)
  105.   {
  106.     Error_Handler();
  107.   }

  108.     /**Configure Regular Channel
  109.     */
  110.   sConfig.Channel = ADC_CHANNEL_7;
  111.   sConfig.Rank = 2;
  112.   if (HAL_ADC_ConfigChannel(&hadc2, &sConfig) != HAL_OK)
  113.   {
  114.     Error_Handler();
  115.   }

  116.     /**Configure Regular Channel
  117.     */
  118.   sConfig.Channel = ADC_CHANNEL_8;
  119.   sConfig.Rank = 3;
  120.   if (HAL_ADC_ConfigChannel(&hadc2, &sConfig) != HAL_OK)
  121.   {
  122.     Error_Handler();
  123.   }

  124.     /**Configure Regular Channel
  125.     */
  126.   sConfig.Channel = ADC_CHANNEL_9;
  127.   sConfig.Rank = 4;
  128.   if (HAL_ADC_ConfigChannel(&hadc2, &sConfig) != HAL_OK)
  129.   {
  130.     Error_Handler();
  131.   }

  132. }

  133. static uint32_t HAL_RCC_ADC12_CLK_ENABLED=0;

  134. void HAL_ADC_MspInit(ADC_HandleTypeDef* adcHandle)
  135. {

  136.   GPIO_InitTypeDef GPIO_InitStruct;
  137.   if(adcHandle->Instance==ADC1)
  138.   {
  139.   /* USER CODE BEGIN ADC1_MspInit 0 */

  140.   /* USER CODE END ADC1_MspInit 0 */
  141.     /* Peripheral clock enable */
  142.     HAL_RCC_ADC12_CLK_ENABLED++;
  143.     if(HAL_RCC_ADC12_CLK_ENABLED==1){
  144.       __HAL_RCC_ADC12_CLK_ENABLE();
  145.     }
  146.   
  147.     /**ADC1 GPIO Configuration   
  148.     PA0     ------> ADC1_IN1
  149.     PA1     ------> ADC1_IN2
  150.     PA2     ------> ADC1_IN3
  151.     PA3     ------> ADC1_IN4
  152.     */
  153.     GPIO_InitStruct.Pin = GPIO_PIN_0|GPIO_PIN_1|GPIO_PIN_2|GPIO_PIN_3;
  154.     GPIO_InitStruct.Mode = GPIO_MODE_ANALOG;
  155.     GPIO_InitStruct.Pull = GPIO_NOPULL;
  156.     HAL_GPIO_Init(GPIOA, &GPIO_InitStruct);

  157.     /* Peripheral DMA init*/
  158.   
  159.     hdma_adc1.Instance = DMA1_Channel1;
  160.     hdma_adc1.Init.Direction = DMA_PERIPH_TO_MEMORY;
  161.     hdma_adc1.Init.PeriphInc = DMA_PINC_DISABLE;
  162.     hdma_adc1.Init.MemInc = DMA_MINC_ENABLE;
  163.     hdma_adc1.Init.PeriphDataAlignment = DMA_PDATAALIGN_HALFWORD;
  164.     hdma_adc1.Init.MemDataAlignment = DMA_MDATAALIGN_HALFWORD;
  165.     hdma_adc1.Init.Mode = DMA_CIRCULAR;
  166.     hdma_adc1.Init.Priority = DMA_PRIORITY_LOW;
  167.     if (HAL_DMA_Init(&hdma_adc1) != HAL_OK)
  168.     {
  169.       Error_Handler();
  170.     }

  171.     __HAL_LINKDMA(adcHandle,DMA_Handle,hdma_adc1);

  172.   /* USER CODE BEGIN ADC1_MspInit 1 */

  173.   /* USER CODE END ADC1_MspInit 1 */
  174.   }
  175.   else if(adcHandle->Instance==ADC2)
  176.   {
  177.   /* USER CODE BEGIN ADC2_MspInit 0 */

  178.   /* USER CODE END ADC2_MspInit 0 */
  179.     /* Peripheral clock enable */
  180.     HAL_RCC_ADC12_CLK_ENABLED++;
  181.     if(HAL_RCC_ADC12_CLK_ENABLED==1){
  182.       __HAL_RCC_ADC12_CLK_ENABLE();
  183.     }
  184.   
  185.     /**ADC2 GPIO Configuration   
  186.     PC0     ------> ADC2_IN6
  187.     PC1     ------> ADC2_IN7
  188.     PC2     ------> ADC2_IN8
  189.     PC3     ------> ADC2_IN9
  190.     */
  191.     GPIO_InitStruct.Pin = GPIO_PIN_0|GPIO_PIN_1|GPIO_PIN_2|GPIO_PIN_3;
  192.     GPIO_InitStruct.Mode = GPIO_MODE_ANALOG;
  193.     GPIO_InitStruct.Pull = GPIO_NOPULL;
  194.     HAL_GPIO_Init(GPIOC, &GPIO_InitStruct);

  195.     /* Peripheral DMA init*/
  196.   
  197.     hdma_adc2.Instance = DMA2_Channel1;
  198.     hdma_adc2.Init.Direction = DMA_PERIPH_TO_MEMORY;
  199.     hdma_adc2.Init.PeriphInc = DMA_PINC_DISABLE;
  200.     hdma_adc2.Init.MemInc = DMA_MINC_ENABLE;
  201.     hdma_adc2.Init.PeriphDataAlignment = DMA_PDATAALIGN_HALFWORD;
  202.     hdma_adc2.Init.MemDataAlignment = DMA_MDATAALIGN_HALFWORD;
  203.     hdma_adc2.Init.Mode = DMA_CIRCULAR;
  204.     hdma_adc2.Init.Priority = DMA_PRIORITY_LOW;
  205.     if (HAL_DMA_Init(&hdma_adc2) != HAL_OK)
  206.     {
  207.       Error_Handler();
  208.     }

  209.     __HAL_LINKDMA(adcHandle,DMA_Handle,hdma_adc2);

  210.   /* USER CODE BEGIN ADC2_MspInit 1 */

  211.   /* USER CODE END ADC2_MspInit 1 */
  212.   }
  213. }

  214. void HAL_ADC_MspDeInit(ADC_HandleTypeDef* adcHandle)
  215. {

  216.   if(adcHandle->Instance==ADC1)
  217.   {
  218.   /* USER CODE BEGIN ADC1_MspDeInit 0 */

  219.   /* USER CODE END ADC1_MspDeInit 0 */
  220.     /* Peripheral clock disable */
  221.     HAL_RCC_ADC12_CLK_ENABLED--;
  222.     if(HAL_RCC_ADC12_CLK_ENABLED==0){
  223.       __HAL_RCC_ADC12_CLK_DISABLE();
  224.     }
  225.   
  226.     /**ADC1 GPIO Configuration   
  227.     PA0     ------> ADC1_IN1
  228.     PA1     ------> ADC1_IN2
  229.     PA2     ------> ADC1_IN3
  230.     PA3     ------> ADC1_IN4
  231.     */
  232.     HAL_GPIO_DeInit(GPIOA, GPIO_PIN_0|GPIO_PIN_1|GPIO_PIN_2|GPIO_PIN_3);

  233.     /* Peripheral DMA DeInit*/
  234.     HAL_DMA_DeInit(adcHandle->DMA_Handle);
  235.   /* USER CODE BEGIN ADC1_MspDeInit 1 */

  236.   /* USER CODE END ADC1_MspDeInit 1 */
  237.   }
  238.   else if(adcHandle->Instance==ADC2)
  239.   {
  240.   /* USER CODE BEGIN ADC2_MspDeInit 0 */

  241.   /* USER CODE END ADC2_MspDeInit 0 */
  242.     /* Peripheral clock disable */
  243.     HAL_RCC_ADC12_CLK_ENABLED--;
  244.     if(HAL_RCC_ADC12_CLK_ENABLED==0){
  245.       __HAL_RCC_ADC12_CLK_DISABLE();
  246.     }
  247.   
  248.     /**ADC2 GPIO Configuration   
  249.     PC0     ------> ADC2_IN6
  250.     PC1     ------> ADC2_IN7
  251.     PC2     ------> ADC2_IN8
  252.     PC3     ------> ADC2_IN9
  253.     */
  254.     HAL_GPIO_DeInit(GPIOC, GPIO_PIN_0|GPIO_PIN_1|GPIO_PIN_2|GPIO_PIN_3);

  255.     /* Peripheral DMA DeInit*/
  256.     HAL_DMA_DeInit(adcHandle->DMA_Handle);
  257.   /* USER CODE BEGIN ADC2_MspDeInit 1 */

  258.   /* USER CODE END ADC2_MspDeInit 1 */
  259.   }
  260. }
复制代码

评分

参与人数 1ST金币 +2 收起 理由
zero99 + 2

查看全部评分

无薪税绵 回答时间:2016-11-22 08:22:37
楼主试试关闭ADC1,单独使用ADC2看正常不。
如果不正常,就是ADC2未正常初始化。

评分

参与人数 1ST金币 +2 收起 理由
zero99 + 2

查看全部评分

zhulikai 回答时间:2016-11-22 08:22:52
帮顶了
z258121131 回答时间:2016-11-22 09:02:56
帮顶,楼主解决后发一下。
zhcj66 回答时间:2016-11-22 09:05:55
帮顶,楼主用ADC1的代码在改为ADC2试试

评分

参与人数 1ST金币 +2 收起 理由
zero99 + 2

查看全部评分

chaplin1999-262 回答时间:2016-11-22 09:14:50
adc2 pc端口除了adc外有没有接5v的外设?接的话,好像会有影响!

评分

参与人数 1ST金币 +2 收起 理由
zero99 + 2

查看全部评分

xuezhimeng2010 回答时间:2016-11-22 09:48:55
楼主不要随意修改自动生成的代码部分,这样如果有地方配置错了,再次使用cube配置时,会覆盖掉你修改的代码的。你只能在
/* USER CODE BEGIN ADC2_MspDeInit 1 */

  /* USER CODE END ADC2_MspDeInit 1 */
这样的结构内部添加/修改你的代码,或者另外独立建立文件,如果没有使用代码管理,你会发现你所修改的内容,再次使用cube配置时被改的体无完肤,你会欲哭无泪的
ataudio 回答时间:2016-11-22 13:52:12
EOCSelection 的配置不一样。
配置过程自查,按照前面网友说的,单独配置每一个ADC,都正常了,再合在一起使用,调试。

评分

参与人数 1ST金币 +2 收起 理由
zero99 + 2

查看全部评分

五哥1 回答时间:2016-11-22 17:01:43
前面的都说了,代码呀,外设有无+5V设备呀,交换ADC1和ADC2呀,都可以试一下,就是没有解决,也是一种解决问题的思路,把结果给大家共享下吧

评分

参与人数 1ST金币 +2 收起 理由
zero99 + 2

查看全部评分

12下一页

所属标签

相似问题

官网相关资源

关于
我们是谁
投资者关系
意法半导体可持续发展举措
创新与技术
意法半导体官网
联系我们
联系ST分支机构
寻找销售人员和分销渠道
社区
媒体中心
活动与培训
隐私策略
隐私策略
Cookies管理
行使您的权利
官方最新发布
STM32N6 AI生态系统
STM32MCU,MPU高性能GUI
ST ACEPACK电源模块
意法半导体生物传感器
STM32Cube扩展软件包
关注我们
st-img 微信公众号
st-img 手机版