|
static uint32_t GetVOLSample_POLL(uint32_t channel, uint32_t *ADCRdresult)
{
uint32_t counter = 0;
uint32_t EOC_Flag;
uint8_t State;
FL_RCC_SetADCPrescaler(FL_RCC_ADC_PSC_DIV8); //配置ADC工作时钟分频
FL_VREF_EnableVREFBuffer(VREF); //使能VREF BUFFER,
//为了考虑功耗BUFFER可关闭,从使能到ADC可以正常采样需要100us的建立时间,本例程配置慢速通道较长的采样时间,来保证建立时间满足。
FL_DelayMs(100);
FL_ADC_DisableSequencerChannel(ADC, FL_ADC_ALL_CHANNEL); //清空打开的通道
FL_ADC_EnableSequencerChannel(ADC, channel); //通道选择
FL_ADC_ClearFlag_EndOfConversion(ADC); //清标志
FL_ADC_Enable(ADC); //启动ADC
FL_ADC_EnableSWConversion(ADC); //开始转换
do
{
EOC_Flag = FL_ADC_IsActiveFlag_EndOfConversion(ADC);
counter++;
} while((counter != 0xFFFFFFFFU) && (EOC_Flag == 0U)); //等待转换完成
if(EOC_Flag == 0x01U)
{
FL_ADC_ClearFlag_EndOfConversion(ADC); //清标志
*ADCRdresult = FL_ADC_ReadConversionData(ADC); //获取采样值
FL_ADC_Disable(ADC); //关闭ADC
FL_ADC_DisableSequencerChannel(ADC, channel); //通道关闭
FL_VREF_DisableVREFBuffer(VREF); //关闭VREF BUFFER
State = 0;
}
else
{
State = 1 ;
}
return State;
}
GetTSample_State = GetVOLSample_POLL(FL_ADC_INTERNAL_TS, &GetTSSample);
为什么这样用采集到的数据与例程里面的不一样啊
以下是例程:
GetTSample_State = GetTSSample_POLL(&GetTSSample);
static uint32_t GetTSSample_POLL(uint32_t *ADCRdresult)
{
uint32_t counter = 0;
uint32_t EOC_Flag;
uint8_t State;
FL_RCC_SetADCPrescaler(FL_RCC_ADC_PSC_DIV8); //配置ADC工作时钟分频
FL_VREF_EnableVPTATBuffer(VREF); //使能PTATBUFFER
//为了考虑功耗BUFFER可关闭,从使能到ADC可以正常采样需要100us的建立时间,本例程配置慢速通道较长的采样时间,来保证建立时间满足。
FL_ADC_DisableSequencerChannel(ADC, FL_ADC_ALL_CHANNEL); //清空打开的通道
FL_ADC_EnableSequencerChannel(ADC, FL_ADC_INTERNAL_TS); //通道选择
FL_ADC_ClearFlag_EndOfConversion(ADC); //清标志
FL_ADC_Enable(ADC); //启动ADC
FL_ADC_EnableSWConversion(ADC); //开始转换
do
{
EOC_Flag = FL_ADC_IsActiveFlag_EndOfConversion(ADC);
counter++;
} while((counter != 0xFFFFFFFFU) && (EOC_Flag == 0U)); //等待转换完成
if(EOC_Flag == 0x01U)
{
FL_ADC_ClearFlag_EndOfConversion(ADC); //清标志
*ADCRdresult = FL_ADC_ReadConversionData(ADC); //获取采样值
FL_ADC_Disable(ADC); //关闭ADC
FL_ADC_DisableSequencerChannel(ADC, FL_ADC_INTERNAL_TS); //通道关闭
State = 0;
}
else
{
State = 1 ;
}
return State;
}
|
|