C中的“找不到标识符”

时间:2019-11-13 21:58:49

标签: c microcontroller

我目前正在用C语言中的Code Composer Studion编程一个微控制器(得克萨斯仪器公司的TM4C123GH6PM)。为了测试该代码,我想读出一个电阻上的电压。我已经编写了这段代码,并通过TI的示例对其进行了检查(这与我想做的非常接近)。

在两种情况下,编译代码都是没有问题的。但是,当我要观看表达式ui32ADC0Value时,Code Composer Studio显示了在启动ui32ADC0Value = 0且ui32ADC0Value作为unsigned int类型时显示的代码,但是在启动代码后,它显示“找不到标识符”,并且类型突然变得未知。

我无法向我解释这一点,因为正如我已经说过的,我尝试了与TI正式发布的代码非常相似的事情,并且在两种情况下均出现了错误。

这是我的代码:

#include<stdint.h>
#include<stdbool.h>
#include"inc/hw_ints.h"
#include"inc/hw_memmap.h"
#include"inc/hw_types.h"
#include"driverlib/gpio.h"
#include"driverlib/sysctl.h"
#include"driverlib/timer.h"
#include"driverlib/interrupt.h"
#include<math.h>
#include<driverlib/adc.h>
#include<driverlib/timer.h>


void main(void)
{
    uint32_t ui32ADC0Value;

    // set system clock
    SysCtlClockSet(SYSCTL_SYSDIV_5|SYSCTL_USE_PLL|SYSCTL_OSC_MAIN|SYSCTL_XTAL_16MHZ);

    // activate ADC
    SysCtlPeripheralEnable(SYSCTL_PERIPH_ADC0);
    SysCtlPeripheralEnable(SYSCTL_PERIPH_GPIOE);

    // assign ADC function to PIN PE2
    GPIOPinTypeADC(GPIO_PORTE_BASE,GPIO_PIN_2);

    // configure ADC
    ADCSequenceConfigure(ADC0_BASE,1,ADC_TRIGGER_PROCESSOR,0); // prozessor as trigger source
    ADCSequenceStepConfigure(ADC0_BASE,1,0,ADC_CTL_CH1|ADC_CTL_IE| ADC_CTL_END); // scan AI1 /generate interrupt at the end /last step
    ADCSequenceEnable(ADC0_BASE,1); // activate ADC Sequence 1

    while(1){
        ADCIntClear(ADC0_BASE,1); // delete maybe existing ADC Interrupts
        ADCProcessorTrigger(ADC0_BASE,1); // start convertion
        while(!ADCIntStatus(ADC0_BASE,1,false)){} // wait for end of convertion
        ADCSequenceDataGet(ADC0_BASE,1,&ui32ADC0Value); // read value
    }
}

感谢您提前帮助我。

2 个答案:

答案 0 :(得分:1)

优化的代码会使调试器很难知道如何跟踪变量值。尝试在禁用优化的情况下调试功能,或者在逐步跟踪功能调用点的值等时观察反汇编。

答案 1 :(得分:0)

当我在main外部定义变量时,它可以工作。谢谢大家:)