wangliansz 发表于 2019-7-18 16:07:37

DMA数据搬完回调函数里,看不出是Adc1;还是Adc2数据

用阿波罗stm32f767igt6, 开发板,用ADC1 通道2Pa2脚做脉冲信号Adc转换;另一通道用ADC2 通道3Pa3脚做脉冲信号Adc转换;用Dma完成转换回调函数来获取转换数据;在回调函数里如何区分Adc1;还是Adc2的数据;

/**
* @brief This function handles DMA2 stream0 global interrupt.
*/
void DMA2_Stream0_IRQHandler(void)
{
/* USER CODE BEGIN DMA2_Stream0_IRQn 0 */
/* USER CODE END DMA2_Stream0_IRQn 0 */
HAL_DMA_IRQHandler(&hdma_adc1);
/* USER CODE BEGIN DMA2_Stream0_IRQn 1 */
/* USER CODE END DMA2_Stream0_IRQn 1 */
}
/**
* @brief This function handles DMA2 stream2 global interrupt.
*/
void DMA2_Stream2_IRQHandler(void)
{
/* USER CODE BEGIN DMA2_Stream2_IRQn 0 */
/* USER CODE END DMA2_Stream2_IRQn 0 */
HAL_DMA_IRQHandler(&hdma_adc2);
/* USER CODE BEGIN DMA2_Stream2_IRQn 1 */
/* USER CODE END DMA2_Stream2_IRQn 1 */
}
在这个
中断里能看出Adc1;还是2数据的

void HAL_ADC_ConvCpltCallback(ADC_HandleTypeDef* hadc)
{
   uint8_t i;
   HAL_ADC_Stop_DMA(&hadc1);

       HAL_GPIO_TogglePin(GPIOB,GPIO_PIN_12);
    for(i=0;i<12;i++)
   {
   
    // addata=aResultDMA;
   u16Adc1Num=aResultDMAAdc1;
   u16Adc1No++;
   }
   HAL_ADC_Start_DMA(&hadc1, aResultDMAAdc1, 12);
   
}

这个DMA数据搬完回调函数里,看不出是Adc1;还是Adc2数据

bl2019 发表于 2019-7-19 13:32:23

调试一下,感觉是ADC1

tgw860910 发表于 2019-7-19 13:33:50

void HAL_ADC_ConvCpltCallback(ADC_HandleTypeDef* hadc)
这里不是有一个参数吗?在函数里面判断一下不就好了,不同ADC放到不同的数组里。

奏奏奏 发表于 2019-7-19 13:50:06

建议楼主看一下这个文章:
http://www.controllerstech.com/stm32-adc-multiple-channels-updated-method/

danke1a09b4c 发表于 2019-7-21 09:55:14

钩子hadc1就是1,hadc2就是2
页: [1]
查看完整版本: DMA数据搬完回调函数里,看不出是Adc1;还是Adc2数据