|
就是我想用外部的一个点火信号来触发H7的adc进行转换,上升沿触发,但是不知道为啥触发不了,有大佬帮我看一下吗?下面是我的一些配置
#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);
|
|