Warning: file_get_contents(/data/phpspider/zhask/data//catemap/4/c/55.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181

Warning: file_get_contents(/data/phpspider/zhask/data//catemap/5/spring-mvc/2.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
&引用;“未找到标识符”;在C中_C_Microcontroller - Fatal编程技术网

&引用;“未找到标识符”;在C中

&引用;“未找到标识符”;在C中,c,microcontroller,C,Microcontroller,我目前正在用C语言编写一个微控制器(来自德克萨斯仪器公司的TM4C123GH6PM)的代码生成器。为了测试代码,我想读出电阻上的电压。我已经编写了这段代码,并用TI的一个示例进行了检查(这与我想要做的非常接近) 在这两种情况下,编译代码都没有问题。但是,当我想查看表达式ui32ADC0Value时,Code Composer Studio会在启动代码ui32ADC0Value=0之前显示ui32ADC0Value为类型unsigned int,但在启动代码后会显示“identifier not

我目前正在用C语言编写一个微控制器(来自德克萨斯仪器公司的TM4C123GH6PM)的代码生成器。为了测试代码,我想读出电阻上的电压。我已经编写了这段代码,并用TI的一个示例进行了检查(这与我想要做的非常接近)

在这两种情况下,编译代码都没有问题。但是,当我想查看表达式ui32ADC0Value时,Code Composer Studio会在启动代码ui32ADC0Value=0之前显示ui32ADC0Value为类型unsigned int,但在启动代码后会显示“identifier not found”,然后突然该类型变得未知

我无法向我解释这一点,因为正如我已经说过的,我尝试了一些与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
    }
}
#包括
#包括
#包括“inc/hw_ints.h”
#包括“inc/hw_memmap.h”
#包括“inc/hw_types.h”
#包括“driverlib/gpio.h”
#包括“driverlib/sysctl.h”
#包括“driverlib/timer.h”
#包括“driverlib/interrupt.h”
#包括
#包括
#包括
真空总管(真空)
{
uint32_t UI32ADC0值;
//设置系统时钟
SysCtlClockSet(SYSCTL_SYSDIV_5 | SYSCTL_USE_PLL | SYSCTL_OSC_MAIN | SYSCTL_XTAL_16MHZ);
//激活ADC
SYSCTL外围设备启用(SYSCTL_PERIPH_ADC0);
SYSCTL外围设备启用(SYSCTL_PERIPH_GPIOE);
//将ADC功能分配给引脚PE2
GPIOPinTypeADC(GPIO_端口_基座,GPIO_引脚_2);
//配置ADC
ADC序列配置(ADC0_BASE,1,ADC_TRIGGER_PROCESSOR,0);//prozessor作为触发源
ADC顺序步骤配置(ADC0_BASE,1,0,ADC_CTL_CH1 | ADC_CTL_IE | ADC_CTL_END);//扫描AI1/在结束/最后一步生成中断
ADCSequenceEnable(ADC0_BASE,1);//激活ADC序列1
而(1){
ADCIntClear(ADC0_BASE,1);//删除可能存在的ADC中断
ADCProcessorTrigger(ADC0_BASE,1);//开始转换
而(!ADCIntStatus(ADC0_BASE,1,false)){}//等待转换结束
ADCSequenceDataGet(ADC0_BASE,1和ui32ADC0Value);//读取值
}
}

感谢您提前帮助我。

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

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

你们打错了吗?旁白:关于
ui32ADC0Value
0
,没有“当然”的说法。它未初始化。我检查了两次,这不是问题所在…如果将
ui32ADC0Value
的定义移到
main
之外,会发生什么情况?请尝试分配它。听起来像是在进行优化。我不使用这个工具,但我假设有一个build for debug选项和build for release?您是为调试而构建的吗?另一个经典技巧是将相关变量标记为
volatile
,其副作用是阻止优化器尝试对其进行优化。优化被完全禁用,这没有帮助。如果我将变量标记为volatile,调试器将显示警告“volatile uint32\u t*”类型的参数与“uint32\u t*”类型的参数不兼容”