直接贴代码:
//ch:通道值 0~3
u16 Get_Adc(u8 ch)
{
ADC_SoftwareStartConvCmd(ADC1, ENABLE); //使能指定的ADC1的软件转换启动功能
while(!ADC_GetFlagStatus(ADC1, ADC_FLAG_EOC ));//等待转换结束
return ADC_GetConversionValue(ADC1); //返回最近一次ADC1规则组的转换结果
}
某些条件下会卡死在ADC_GetConversionValue(ADC1)中,不得其解
后修改为直接操作寄存器的形式:
//ch:通道值 0~3
u16 Get_Adc(u8 ch)
{
ADC1->CR2 |= CR2_EXTTRIG_SWSTART_Set;
while(!ADC_GetFlagStatus(ADC1, ADC_FLAG_EOC ));//等待转换结束
return (uint16_t) ADC1->DR;//ADC_GetConversionValue(ADC1); //返回最近一次ADC1规则组的转换结果
}
没有再出现卡死的问题,原因不得而知,在此记录一下,后续经验是:感觉现象百试不对的话,试一下抛弃封装好的库函数,直接操作寄存器看现象。。。。。。