STM32使用ADC时,会出现阻塞现象

使用ADC转换时,下述函数会阻塞while循环中,请问如何解决(stm32f103c8t6)

u16 ADC_Trans(void)
{
    u16 adc_value = 0;
    u8 i = 0;
    
    for(i = 0; i < 50; i++)
    { 
        //开始转换
        ADC_SoftwareStartConvCmd(ADC1,ENABLE);
        
        //转换是否结束
        **while(!ADC_GetFlagStatus(ADC1,ADC_FLAG_EOC));  **
        adc_value = adc_value + ADC_GetConversionValue(ADC1);//读ADC中的值
    }
    printf("%d\r\n",adc_value);
    return adc_value / 50;
}

这个代码具体问题要调试分析
做嵌入式的ADC调试,一般不自己从0写代码
你可以参考官方的示例代码,或者STM32开发板的示例代码,例如正点原子,野火等等