硬汉嵌入式论坛

 找回密码
 立即注册
查看: 622|回复: 1
收起左侧

[ADC] H7adc外部触发转换求助

[复制链接]
回帖奖励 18 个金币 回复本帖可获得 2 个金币奖励! 每人限 1 次

18

主题

92

回帖

146

积分

初级会员

积分
146
QQ
发表于 2024-7-18 20:00:08 | 显示全部楼层 |阅读模式
就是我想用外部的一个点火信号来触发H7的adc进行转换,上升沿触发,但是不知道为啥触发不了,有大佬帮我看一下吗?下面是我的一些配置 微信截图_20240718195905.png 微信截图_20240718195933.png

#define ADC_DATA_LENGTH  1024  //定义采集数据长度为2048
uint32_t g_adc3_dma_data1[ADC_DATA_LENGTH];//定义adc3采集数据存放数组
uint8_t g_adc3_dma_complete_flag = 0;        //adc3数据dma采集完成标志,在dma采集完成回调函数设置

void HAL_GPIO_EXTI_Callback(uint16_t GPIO_Pin)
{
    if (GPIO_Pin == GPIO_PIN_11)
    {
        // 处理GPIO_PIN_11的中断事件
                g_adc3_dma_complete_flag = 1;
                HAL_ADC_Stop_DMA(&hadc3);
    }
}int main(void)
{
  HAL_Init();
  SystemClock_Config();
  MX_GPIO_Init();
  MX_DMA_Init();
  MX_USART6_UART_Init();
  MX_ADC3_Init();
  HAL_ADC_Start_DMA(&hadc3,g_adc3_dma_data1,ADC_DATA_LENGTH);//ADC的dma开始采集
  while (1)
  {
if(g_adc3_dma_complete_flag == 1)//采集数据没完成,采集完成后再发送 111
                        {
                                for(int i=0;i<1024;i++)
                                {                               
                                        printf("%d\r\n",g_adc3_dma_data1&0x0000ffff);
                                }
                                g_adc3_dma_complete_flag = 0;               
                                memset(g_adc3_dma_data1,0,ADC_DATA_LENGTH);//清除数据
                                HAL_ADC_Start_DMA(&hadc3, g_adc3_dma_data1,ADC_DATA_LENGTH);//ADC的dma开始采集
                        }
  }

}
hadc3.Instance = ADC3;
  hadc3.Init.Resolution = ADC_RESOLUTION_16B;
  hadc3.Init.ScanConvMode = ADC_SCAN_DISABLE;
  hadc3.Init.EOCSelection = ADC_EOC_SINGLE_CONV;
  hadc3.Init.LowPowerAutoWait = DISABLE;
  hadc3.Init.ContinuousConvMode = DISABLE;
  hadc3.Init.NbrOfConversion = 1;
  hadc3.Init.DiscontinuousConvMode = DISABLE;
  hadc3.Init.ExternalTrigConv = ADC_EXTERNALTRIG_EXT_IT11;
  hadc3.Init.ExternalTrigConvEdge = ADC_EXTERNALTRIGCONVEDGE_RISING;
  hadc3.Init.ConversionDataManagement = ADC_CONVERSIONDATA_DMA_ONESHOT;
  hadc3.Init.Overrun = ADC_OVR_DATA_OVERWRITTEN;
  hadc3.Init.LeftBitShift = ADC_LEFTBITSHIFT_NONE;
  hadc3.Init.OversamplingMode = DISABLE;


  /*Configure GPIO pin : PE11 */
  GPIO_InitStruct.Pin = GPIO_PIN_11;
  GPIO_InitStruct.Mode = GPIO_MODE_IT_RISING;
  GPIO_InitStruct.Pull = GPIO_NOPULL;
  HAL_GPIO_Init(GPIOE, &GPIO_InitStruct);

  /* EXTI interrupt init*/
  HAL_NVIC_SetPriority(EXTI15_10_IRQn, 0, 0);
  HAL_NVIC_EnableIRQ(EXTI15_10_IRQn);


回复

使用道具 举报

1万

主题

7万

回帖

11万

积分

管理员

Rank: 9Rank: 9Rank: 9

积分
115490
QQ
发表于 2024-7-19 08:52:19 | 显示全部楼层

回帖奖励 +2 个金币

楼主这个不是监测到触发后,开启转换吗,这个程序里面为什么检测到后关闭了,是出于什么考虑

g_adc3_dma_complete_flag = 1;
HAL_ADC_Stop_DMA(&hadc3);

另外就是当前能正常进入EXTI11中断里面吧
回复

使用道具 举报

您需要登录后才可以回帖 登录 | 立即注册

本版积分规则

QQ|小黑屋|Archiver|手机版|硬汉嵌入式论坛

GMT+8, 2025-4-29 06:12 , Processed in 0.248211 second(s), 29 queries .

Powered by Discuz! X3.4 Licensed

Copyright © 2001-2023, Tencent Cloud.

快速回复 返回顶部 返回列表