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

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

[复制链接]
wangliansz 提问时间:2019-7-18 16:07 /
用阿波罗
stm32f767igt6,
开发板,用
ADC1
通道
2  Pa2
脚做脉冲信号
Adc
转换;另一通道用
ADC2
通道
3  Pa3
脚做脉冲信号
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[u16Adc1No]=aResultDMAAdc1;
   u16Adc1No++;
   }
     HAL_ADC_Start_DMA(&hadc1, aResultDMAAdc1, 12);
   
}

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

收藏 评论4 发布时间:2019-7-18 16:07

举报

4个回答
bl2019 回答时间:2019-7-19 13:32:23
调试一下,感觉是ADC1
tgw860910 回答时间:2019-7-19 13:33:50
void HAL_ADC_ConvCpltCallback(ADC_HandleTypeDef* hadc)
这里不是有一个参数吗?在函数里面判断一下不就好了,不同ADC放到不同的数组里。

评分

参与人数 1蝴蝶豆 +2 收起 理由
STMCU + 2

查看全部评分

奏奏奏 回答时间:2019-7-19 13:50:06
建议楼主看一下这个文章:
http://www.controllerstech.com/s ... els-updated-method/
danke1a09b4c 回答时间:2019-7-21 09:55:14
钩子hadc1就是1,hadc2就是2

评分

参与人数 1蝴蝶豆 +2 收起 理由
STMCU + 2

查看全部评分

所属标签

相似问题

关于意法半导体
我们是谁
投资者关系
意法半导体可持续发展举措
创新与技术
招聘信息
联系我们
联系ST分支机构
寻找销售人员和分销渠道
社区
媒体中心
活动与培训
隐私策略
隐私策略
Cookies管理
行使您的权利
关注我们
st-img 微信公众号
st-img 手机版