“线程”中讨论的其它部件:TM4C123
我的程序无法返回电压值, 表达式窗口中的值为 “未找到标识符:ADC1_BASE”
我的程序似乎无法结束中断,该程序是 ADC 的基本示例,我认为它不应该这样做...

This thread has been locked.
If you have a related question, please click the "Ask a related question" button in the top right corner. The newly created question will be automatically linked to this question.
我的程序无法返回电压值, 表达式窗口中的值为 “未找到标识符:ADC1_BASE”
我的程序似乎无法结束中断,该程序是 ADC 的基本示例,我认为它不应该这样做...

您好,
问题出在下面的行。 您需要传递一个指针。
ADCSequenceDataSet (ADC1_BASE,0,ui32ADC1Value);

您需要更改为:
ADCSequenceDataSet (ADC1_BASE,0,&ui32ADC1Value);
下面是一个工作代码。
int main(void)
{
uint32_t ui32ADC1Value;
SysCtlClockSet ( SYSCTL_SYSDIV_5|SYSCTL_USE_PLL|SYSCTL_OSC_MAIN|SYSCTL_XTAL_16MHZ ) ;
SysCtlPeripheralEnable(SYSCTL_PERIPH_ADC1);
SysCtlPeripheralEnable(SYSCTL_PERIPH_GPIOE);
GPIOPinTypeADC(GPIO_PORTE_BASE, GPIO_PIN_2);
ADCReferenceSet(ADC1_BASE, ADC_REF_INT);
ADCSequenceConfigure(ADC1_BASE, 0, ADC_TRIGGER_PROCESSOR, 0);
ADCSequenceStepConfigure(ADC1_BASE, 0, 0, ADC_CTL_CH1 | ADC_CTL_IE | ADC_CTL_END);
ADCSequenceEnable(ADC1_BASE, 0);
ADCIntClear(ADC1_BASE, 0);
//volatile uint32_t ui32ADC1Value;
while(1)
{
ADCProcessorTrigger(ADC1_BASE, 0);
while(!ADCIntStatus(ADC1_BASE, 0, false))
{
}
ADCIntClear(ADC1_BASE, 0);
//
// Read ADC Value.
//
ADCSequenceDataGet(ADC1_BASE, 0, &ui32ADC1Value);
SysCtlDelay(SysCtlClockGet() / 12);
}
}
感谢你的帮助,但我仍然有问题
当我更改代码时,我发现该表达式在开始运行时仍然是“找不到标识符:ui32ADC1Value”
我想知道我的设备是否有问题,但当我使用另一台设备时,也发生了同样的情况。
当我单击简历时,它就像这样

当我单击暂停时,它就像这样

我现在没有直流电源,因此我连接了3.3 V 和 PE2以尝试 ADC

这 是我使用的代码
#include <stdint.h>
#include <stdbool.h>
#include "inc/HW_memmap.h"(#include "inc/HW_memmap.h")
#include "inc/HW_types.h"
#include "driverlib/adc.h"
#include "driverlib/GPIO.h"
#include "driverlib/sysctl.h"
Int main (无效)
{
UINT32_t ui32ADC1Value;
Sysctl 时钟集( sysctl_SYSDIV_5|sysctl_use_PLL |sysctl_OSC 主|sysctl_Xtal_16MHz );
SysPeripheralEnable (sysctl_Periph_ADC1);
SysPeripheralEnable (sysctl_Periph_GPIOE);
GPIOPinTypeADC (GPIO _Porte 基础,GPIO _PIN_2);
ADCReferenceSet (ADC1_base,ADC_REF_INT);
ADCSequenceConfigure (ADC1_BASE,0,ADC_TRIG_PROCESSOR, 0);
ADCSequenceStepConfigure (ADC1_BASE,0,0,ADC_CTL_CH1 | ADC_CTL_IE | ADC_CTL_END);
ADCSequenceEnable (ADC1_BASE,0);
ADCIntClear (ADC1_BASE,0);
//volatile UINT32_t ui32ADC1Value;
While (1)(同时)
{
ADCProcessorTrigger (ADC1_BASE,0);
While (!ADCIntStatus (ADC1_BASE,0,false))
{
}
ADCIntClear (ADC1_BASE,0);
//
//读取 ADC 值。
//
ADCSequenceDataSet (ADC1_BASE,0,&ui32ADC1Value);
SystlDelay(SysClockGet()/12);
}
}
我给你的代码是 TM4C123。 TM4C129的时钟定义将不同。 因此,您可以首先注释该行,这样它在默认情况下只使用内部 PIOC,就像您在原始代码中使用的一样。
//SysClockSet ( sysctl_SYSDIV_5|sysctl_use_PLL |sysctl_OSC 主|sysctl_Xtal_16MHz ); //注释掉此行,因为这是 TM4C123的行
或者,如果您不想使用 PIOSC,而是像下面这样使用 PLL,请定义 TM4C129的时钟。
ui32SysClock = SysClockFreqSet((((sysctl_XT_25MHz)| sysctl_OSC 主| sysctl_use_PLL | sysctl_CFG VCO_240),120000000);
[引用 userid="512600" url="~/support/icros/arm-based 微处理器-组/基于 ARM 的微控制器/f/arm-based 微控制器- forum/1075822/tm4c1294ncpdt-CAN-no-no-Get-out of an interrup-process-dure-during -sample/3981837[当代码未能在代码中找到时'IDS'398317]'ID'/C32I 时,无法启动'ID'#391837'表达式'<'<'<quote '<quot>
ui32ADC1Value 声明为局部变量。 不能在表达式窗口中显示它。 您只能在变量中查看它。 参见下文。 如果要在表达式窗口中查看变量,则需要将该变量声明为全局变量。 也不能显示 ADC1_BASE,因为它只是一个#define,而不是一个表达式。
