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数据
调试一下,感觉是ADC1
void HAL_ADC_ConvCpltCallback(ADC_HandleTypeDef* hadc)
这里不是有一个参数吗?在函数里面判断一下不就好了,不同ADC放到不同的数组里。
建议楼主看一下这个文章:
http://www.controllerstech.com/stm32-adc-multiple-channels-updated-method/
钩子hadc1就是1,hadc2就是2
页:
[1]