微波EDA网,见证研发工程师的成长!
首页 > 研发问答 > 无线和射频 > TI WIFI设计交流 > ADC在freertos中无法获取采样值

ADC在freertos中无法获取采样值

时间:10-02 整理:3721RD 点击:

我们用adc3获取电池电压,我们调试是用的是NON_OS,但调通后,合入我们的工程,我们的工程使用的是free_rtos的,却无法获取正确电压。为什么相同的代码在NON_OS中可以获取到正确的电压值(1.33v左右),但在free_rtos中却无法获取到电压值(得到的值为0),请教ti的专家们,这是什么原因?代码如下:用adc3作为采样通道,NON_OS和free_rtos都使用的是下面的代码

float AdcBattVolt()
{
unsigned long AdcVolts[24];
unsigned int uiIndex=0;
float fTotal = 0;

MAP_PinTypeADC(PIN_60,PIN_MODE_255);

MAP_ADCTimerConfig(ADC_BASE,2^17);

MAP_ADCTimerEnable(ADC_BASE);

MAP_ADCEnable(ADC_BASE);

MAP_ADCChannelEnable(ADC_BASE, ADC_CH_3);

while(uiIndex < 24)
{
if(MAP_ADCFIFOLvlGet(ADC_BASE, ADC_CH_3))
{
AdcVolts[uiIndex++] = MAP_ADCFIFORead(ADC_BASE, ADC_CH_3);
}
}

MAP_ADCChannelDisable(ADC_BASE, ADC_CH_3);

for(uiIndex = 4; uiIndex < 24; uiIndex++)
{
fTotal += (((float)((AdcVolts[uiIndex] >> 2 ) & 0x0FFF))*1.4)/4096;
}

return fTotal/20;

}

而且我把sdk中的adc_demo例程改为free_rtos的,同样的不管是58,59还是60pin,输出的都是0.0000

不用定时器可以测量不?

Copyright © 2017-2020 微波EDA网 版权所有

网站地图

Top