c - 标识符未定义

标签 c compiler-errors code-composer

这种情况在我身上发生过几次,我正在尝试找出其根本原因。简而言之,我收到这些错误,表明某些内容未定义,但据我所知,它不应该如此。如下所示,我已经包含了 pin_map.h,它在 ~6580 线上定义了我遇到的所有三个错误(SSI1CLK、SS1RX 和 SS1TX 未定义)。

在我的项目属性中,我已包含 C:\StellarisWare 并使用了其他几个文件中的定义。它只是偶尔发生一次,我一生都无法弄清楚。有人可以告诉我我做错了什么吗?

请注意,我使用的是 TI 的 LM3S2965 评估板和 Code Composer Studio。

#include "inc/lm3s2965.h"
#include "inc/hw_ints.h"
#include "inc/hw_ssi.h"
#include "inc/hw_memmap.h"
#include "inc/hw_nvic.h"
#include "inc/hw_types.h"
#include "driverlib/gpio.h"
#include "driverlib/ssi.h"
#include "driverlib/pin_map.h"
#include "driverlib/sysctl.h"

void init_SPI(void){

    SysCtlPeripheralEnable(SYSCTL_PERIPH_SSI1);
    GPIOPinConfigure(GPIO_PE0_SSI1CLK);
    GPIOPinTypeGPIOOutput(GPIO_PORTE_BASE,GPIO_PIN_1);
    GPIOPinConfigure(GPIO_PE2_SSI1RX);
    GPIOPinConfigure(GPIO_PE3_SSI1TX);

    GPIOPinWrite(GPIO_PORTE_BASE,GPIO_PIN_1,GPIO_PIN_1);

    SSIDisable(SSI1_BASE);
    GPIOPinTypeSSI(GPIO_PORTE_BASE, GPIO_PIN_3 | GPIO_PIN_2 |
                   GPIO_PIN_0);

    SSIConfigSetExpClk(SSI1_BASE, SysCtlClockGet(), SSI_FRF_MOTO_MODE_0,
                       SSI_MODE_MASTER, 1000000, 8);
    SSIEnable(SSI1_BASE);

}

文件 pin_map.h 非常非常长,但有问题的定义是:

#define GPIO_PE0_SSI1CLK        0x00040002
#define GPIO_PE0_CCP3           0x00040003
#define GPIO_PE0_EPI0S8         0x00040008

#define GPIO_PE1_SSI1FSS        0x00040402
#define GPIO_PE1_CCP2           0x00040404
#define GPIO_PE1_CCP6           0x00040405
#define GPIO_PE1_EPI0S9         0x00040408

#define GPIO_PE2_CCP4           0x00040801
#define GPIO_PE2_SSI1RX         0x00040802
#define GPIO_PE2_CCP2           0x00040805
#define GPIO_PE2_EPI0S24        0x00040808

#define GPIO_PE3_CCP1           0x00040C01
#define GPIO_PE3_SSI1TX         0x00040C02
#define GPIO_PE3_CCP7           0x00040C05
#define GPIO_PE3_EPI0S25        0x00040C08

错误本身是:

Description Resource    Path    Location    Type
#20 identifier "GPIO_PE0_SSI1CLK" is undefined  SPI.c   /Sandbox 1v1v1/SPI  line 23 C/C++ Problem

最佳答案

确保 pin_map.h 实际上位于 driverlib 目录中。另外,这些定义周围是否有宏?例如:

#ifdef SOME_MACRO
    #define GPIO_PE0_SSI1CLK 0x00040002
#endif

您可能需要#define“SOME_MACRO”

关于c - 标识符未定义,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/20008910/

相关文章:

c - 关于 C 关键字 "restrict"的一个令人费解的例子

Ant 中的 Java 编译错误 : using class literals in annotations

java - 类型转换时不一致(错误: Incompatible types)

c++ - CodeComposerStudio 的 STL 链接错误

CC2650编程通过单击按钮执行不同的语句

c - 设置程序调试缓冲区溢出系统

c - 客户端和服务器之间的 OpenSSL 通信

c程序不接受最多100000个输入

gcc - gcc错误: Can't create precompiled header

c - 如何在 eclipse 中重命名(重构)c 宏