cancel
Showing results for 
Search instead for 
Did you mean: 

is there example for ADC_MultiChannelSingleConversion for stm32L011

lming.0
Associate II

I want sample 2 channels using stm32l011f3 mcu from ,PA0 PA1,

the main function code is

int main(void)

{

 /* USER CODE BEGIN 1 */

uint8_t value_L;

uint8_t value_H;

uint8_t i = 0;

 /* USER CODE END 1 */

 /* 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_ADC_Init();

 MX_USART2_UART_Init();

 /* USER CODE BEGIN 2 */

USART_SendData(USART2,"a");

USART_SendData(USART2,"a");

USART_SendData(USART2,"a");

//HAL_ADC_Start_DMA(&hadc, (uint32_t*)&uhADCxConvertedValue, 1);

 /* USER CODE END 2 */

 /* Infinite loop */

 /* USER CODE BEGIN WHILE */

 while (1)

 {

 /* USER CODE END WHILE */

 /* USER CODE BEGIN 3 */

for(i=0;i<2;i++)

{

HAL_ADC_Start(&hadc);

HAL_ADC_PollForConversion(&hadc,0xffff);//wait adc

uhADCxConvertedValue[i]=HAL_ADC_GetValue(&hadc);

//printf("------ch:%d--%d-------\r\n",i,adcBuf[i]);

value_H = (uhADCxConvertedValue[i] & 0xff00 ) >> 8;

value_L = (uhADCxConvertedValue[i] & 0x00ff );

LL_USART_TransmitData8(USART2, value_L);

LL_USART_TransmitData8(USART2, value_H);

}

HAL_ADC_Stop(&hadc);

LL_mDelay(1000);

 }

 /* USER CODE END 3 */

}

ADC init function is below

/* ADC init function */

void MX_ADC_Init(void)

{

 ADC_ChannelConfTypeDef sConfig;

  /**Configure the global features of the ADC (Clock, Resolution, Data Alignment and number of conversion) 

  */

 hadc.Instance = ADC1;

 hadc.Init.OversamplingMode = DISABLE;

 hadc.Init.ClockPrescaler = ADC_CLOCK_SYNC_PCLK_DIV1;

 hadc.Init.Resolution = ADC_RESOLUTION_12B;

 hadc.Init.SamplingTime = ADC_SAMPLETIME_79CYCLES_5;

 hadc.Init.ScanConvMode = ADC_SCAN_DIRECTION_FORWARD;

 hadc.Init.DataAlign = ADC_DATAALIGN_RIGHT;

 hadc.Init.ContinuousConvMode = DISABLE;

 hadc.Init.DiscontinuousConvMode = ENABLE;

 hadc.Init.ExternalTrigConvEdge = ADC_EXTERNALTRIGCONVEDGE_NONE;

 hadc.Init.ExternalTrigConv = ADC_SOFTWARE_START;

 hadc.Init.DMAContinuousRequests = DISABLE;

 hadc.Init.EOCSelection = ADC_EOC_SINGLE_CONV;

 hadc.Init.Overrun = ADC_OVR_DATA_PRESERVED;

 hadc.Init.LowPowerAutoWait = DISABLE;

 hadc.Init.LowPowerFrequencyMode = DISABLE;

 hadc.Init.LowPowerAutoPowerOff = DISABLE;

 if (HAL_ADC_Init(&hadc) != HAL_OK)

 {

  _Error_Handler(__FILE__, __LINE__);

 }

  /**Configure for the selected ADC regular channel to be converted. 

  */

 sConfig.Channel = ADC_CHANNEL_0;

 sConfig.Rank = 0;

 if (HAL_ADC_ConfigChannel(&hadc, &sConfig) != HAL_OK)

 {

  _Error_Handler(__FILE__, __LINE__);

 }

  /**Configure for the selected ADC regular channel to be converted. 

  */

 sConfig.Channel = ADC_CHANNEL_1;

 sConfig.Rank = 1;

 if (HAL_ADC_ConfigChannel(&hadc, &sConfig) != HAL_OK)

 {

  _Error_Handler(__FILE__, __LINE__);

 }

}

but only sample the value of PA0,

can any one tell me why?

thanks a lot!!

0 REPLIES 0