各位专家:
目前我正在使用 ADC 的 TIVAC、我知道 ADC 为12位、因此我们得到0-4098值、但得到49005000、我不知道产生该误差值的原因、ADC 输入电压为0-3V、但为什么该值将大于12位值、 我已共享了我的串行日志和代码供您参考、请检查并指出错误
#include
#include
#include "inc/hw_types.h"
#include "inc/hw_memmap.h"
#include "driverlib/sysctl.h"
#include "driverlib/gpio.h"
#include "driverlib/adc.h"
#include "driverlib/rom.h"
#include "driverlib/uart.h"
#include "utils/uartstdio.h"
#include "inc/hw_ints.h"
#include "inc/hw_NVIC.h"
#include "inc/hw_types.h"
#include "driverlib/debug.h"
#include "driverlib/fpu.h"
#include "driverlib/interrupt.h"
#include "driverlib/pin_map.h"
#include "driverlib/sysctl.h"
#include "driverlib/SysTick .h"
空配置 UART (空)
{
ROM_SysCtlPeripheralEnable (SYSCTL_Periph_GPIOA);
ROM_SysCtlPeripheralEnable (SYSCTL_Periph_UART0);
ROM_GPIOPinConfigure (GPIO_PA0_U0RX);
ROM_GPIOPinConfigure (GPIO_PA1_U0TX);
ROM_GPIOPinTypeUART (GPIO_Porta_base、GPIO_PIN_0 | GPIO_PIN_1);
UARTClockSourceSet (UART0_BASE、UART_CLOCK_PIOSC);
UARTStdioConfig (0、115200、16000000);
}
int main (空)
{
int ulADC0Value[4];
volatile unsigned long ulTempAvg;
SysCtlPeripheralEnable (SYSCTL_Periph_ADC0);
ADCHardwareOversampleConfigure (ADC0_BASE、64);
ADCSequenceDisable (ADC0_BASE、1);
SysCtlClockSet (SYSCTL_SYSDIV_10 | SYSCTL_USE_PLL | SYSCTL_OSC_MAIN | SYSCTL_XTAL_16MHz);
SysCtlPeripheralEnable (SYSCTL_Periph_GPIOE);
SysCtlPeripheralEnable (SYSCTL_Periph_ADC0);
while (!SysCtlPeripheralReady (SYSCTL_Periph_GPIOE))
{
}
while (!SysCtlPeripheralReady (SYSCTL_Periph_ADC0))
{
}
GPIOPinTypeADC (GPIO_Porte _BASE、GPIO_PIN_3 | GPIO_PIN_2);
ADCSequenceConfigure (ADC0_BASE、1、ADC_TRIGGER_PROCESSOR、0);
ADCSequenceStepConfigure (ADC0_BASE,1,0,ADC_CTL_CH0);
ADCSequenceStepConfigure (ADC0_BASE、1、1、ADC_CTL_CH1 | ADC_CTL_IE | ADC_CTL_END);
ADCSequenceEnable (ADC0_BASE、1);
ADCIntClear (ADC0_BASE、1);
ADCClockConfigSet (ADC0_BASE、ADC_CLOCK_SRC_PIOSC | ADC_CLOCK_RATE_FULL、1);
ConfigureUART();
UARTprintf ("Hello、world!\n");
while (1)
{
ADCProcessorTrigger (ADC0_BASE、1);
while (!ADCIntStatus (ADC0_BASE、1、false))
{
}
ADCIntClear (ADC0_BASE、1);
ADCSequenceDataGet (ADC0_BASE、1、ulADC0Value);
ulTempAvg =(ulADC0Value[0]+ ulADC0Value[1]+ ulADC0Value[2]+ ulADC0Value[3]);
UARTprintf ("adc=%d\n"、ulTempAvg);
SysCtlDelay (SysCtlClockGet ()/ 5 / 3);
}
