这个函数有什么问题啊,我想ADC采集和DMA传输600个数据,触发转换是用PWM波的,但是函数卡在了判断传输是否完成那个while循环哪里,如下图,谢谢帮回答
void ADC_Get_Value(void) { HAL_ADC_Start_DMA(&hadc1, (uint32_t*)&ADC_Value,600); HAL_TIM_PWM_Start_IT(&htim2,TIM_CHANNEL_2); //¿ªÊ¼´¥·¢ADת»» while(!__HAL_DMA_GET_FLAG(&hdma_adc1,DMA_FLAG_TCIF0_4))//µÈ´ý´«ÊäÍê³É { printf("%d\r\n",j++); HAL_Delay(100); } __HAL_DMA_CLEAR_FLAG(&hdma_adc1,DMA_FLAG_TCIF0_4); //Çå³ýÍê³É±êÖ¾ if(__HAL_DMA_GET_FLAG(&hdma_adc1,DMA_FLAG_TEIF0_4)) //Åжϴ«ÊäÊÇ·ñ³ö´í { __HAL_DMA_CLEAR_FLAG(&hdma_adc1,DMA_FLAG_TEIF0_4); //Çå³ý±êÖ¾ ADC_Get_Value(); //ÖØвɼ¯ } HAL_TIM_PWM_Stop_IT(&htim2,TIM_CHANNEL_2); //Í£Ö¹´¥·¢ for(i=0;i<600;i++) { printf("%d\r\n",ADC_Value[i]); } }
不是很完整,不過會卡住多半是中斷問題,我看您的TIM2配置成0,TIM3配置成2(這個應該沒用到?),DMA配置成1,
我覺得DMA應該要是0才對,TIM2(3?)設1才對
以上
看看是不是dma配置的问题