工具/软件:Code Composer Studio
下午好!
我想知道我的代码中哪里有故障、因为我可以运行 ADC 转换器并读取 vaues、但这些值不正确。 我从"TM4C123G_LaunchPad_Workshop_Workbook"获取信息、并编辑了示例代码 示例。 我必须读取 PD1 (AIN6)形式的值。 当我 测量1、65V (3、3V/2)时、我会在调试窗口中看到(我使用选项"Add watch expression..." 和带有"刷新所有窗口"的断点)值~0、43 (变量"wynik")、变量"ui32TempAvg"的值~1763。 当我将导线连接到 GND 时,我看到0,所以仅测量 计算是不正确的?
我使用 的是 EK-TM4C123GXL 板。
(抱歉我的英语、但 这不是我的母语、我只是在学习)
谢谢。
这是我的代码:
#include
#include
#include "inc/hw_memmap.h"
#include "inc/hw_types.h"
#include "driverlib/debug.h"
#include "driverlib/sysctl.h"
#include "driverlib/adc.h"
float wynik;
int main (空)
{
uint32_t ui32ADC0Value[4];
volatile uint32_t ui32TempAvg;
volatile uint32_t ui32TempValueC;
volatile uint32_t ui32TempValueF;
SysCtlClockSet (SYSCTL_SYSDIV_5|SYSCTL_USE_PLL|SYSCTL_OSC_MAIN|SYSCTL_XTAL_16MHz);
SysCtlPeripheralEnable (SYSCTL_Periph_ADC0);
ADCSequenceConfigure (ADC0_BASE、1、ADC_TRIGGER_PROCESSOR、0);
ADCSequenceStepConfigure (ADC0_BASE、1、0、ADC_CTL_CH6);
ADCSequenceStepConfigure (ADC0_BASE、1、1、ADC_CTL_CH6);
ADCSequenceStepConfigure (ADC0_BASE、1、2、ADC_CTL_CH6);
ADCSequenceStepConfigure (ADC0_BASE、1、3、ADC_CTL_CH6|ADC_CTL_IE|ADC_CTL_END);
ADCSequenceEnable (ADC0_BASE、1);
while (1)
{
ADCIntClear (ADC0_BASE、1);
ADCProcessorTrigger (ADC0_BASE、1);
while (!ADCIntStatus (ADC0_BASE、1、false))
{}
ADCSequenceDataGet (ADC0_BASE、1、ui32ADC0Value);
ui32TempAvg =((ui32ADC0Value[0]+ ui32ADC0Value[1]+ ui32ADC0Value[2]+ ui32ADC0Value[3]+ 2)/4);
wynik =((float) ui32TempAvg / 4096);
}
}
