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.

[参考译文] 编译器/MSP-EXP432E401Y:标识符"GPIO_PQ4_DIVSCLK"未定义

Guru**** 657930 points
Other Parts Discussed in Thread: MSP432E401Y, TPS2052B
请注意,本文内容源自机器翻译,可能存在语法或其它翻译错误,仅供参考。如需获取准确内容,请参阅链接中的英语原文或自行翻译。

https://e2e.ti.com/support/microcontrollers/msp-low-power-microcontrollers-group/msp430/f/msp-low-power-microcontroller-forum/895789/compiler-msp-exp432e401y-identifier-gpio_pq4_divsclk-is-undefined

器件型号:MSP-EXP432E401Y
主题中讨论的其他器件:MSP432E401YTPS2052B

工具/软件:TI C/C++编译器

我正在尝试在 MSP432E401Y Launchpad 上启用 DIVSCLK 输出、从现有的 TI-RTOS 示例开始。  下面是主代码的相关部分。  在编译期间、编译器失败并显示以下错误:

>>编译失败
subdir_rules.mk:9:目标'main_tirtos.obj'的配方失败
"../main_tirtos.c"、第63行:错误#20:标识符"GPIO_PQ4_DIVSCLK"未定义
1在编译"./main_tirtos.c"时检测到错误。
gmake:***[main_tirtos.obj]错误1.
gmake:目标"全部"不会由于错误而重新生成。

 GPIO_PQ4_DIVSCLK 的宏在 PIN_MAP.h 中定义、其中包括:

#define GPIO_PQ4_DIVSCLK     0x000E1007

由于某种原因、copiler 找不到此#define。  我怀疑这可能是因为 pin_map.h 以对"#ifdef __MSP432E401Y__"的检查开头、我认为该检查未定义。  定义__MSP432E401Y__的最佳位置在哪里?  我可以在所有#include 之前的主文件中执行该操作、但由于这是 TI 定义的全局变量、因此似乎有更好的定义位置。

/*
=== main_tirtos.c ====
*/

/* RTOS 头文件*/
#include 
#include 

#include 
#include 
#include 
#include 
#include 
#include 
#include 

extern void ti_ndk_config_Global_startupFxn ();

Display_Handle 显示;

//
*==== main ====
*/
int main (void)
{
Board_init ();

//------------- DIVSCLK 输出配置---
SysCtlPeripheralEnable (SYSCTL_Periph_GPIOQ);
GPIOPinConfigure (GPIO_PQ4_DIVSCLK);
GPIODirModeSet (GPIO_PORTQ_BASE、GPIO_PIN_4、GPIO_DIR_MODE_HW);
GPIOPadConfigSet (GPIO_PORTQ_BASE、GPIO_PIN_4、GPIO_Strength _8mA、GPIO_PIN_TYPE_STD);
SysCtlClockOutConfig (SYSCTL_CLKOUT_EN | SYSCTL_CLKOUT_SYSCLK、 10);//--------------------
DIVSCLK 输出配置--- 

谢谢、

-Phil

  • 请注意,本文内容源自机器翻译,可能存在语法或其它翻译错误,仅供参考。如需获取准确内容,请参阅链接中的英语原文或自行翻译。

    您好、Phil、

    请在发布代码时使用代码语法突出显示器。 它使其可读性更高。 编辑:我已相应地更新您的原始帖子。

    您从哪个 TI RTOS 示例开始? 分享如何在 CCS 内的 TI Resource Explorer 中导航到它将会很有帮助。 我将使用 SDK v4.10.00.13和 CCS v10.0.0。 我想在我的设置中重复这个问题。

    此致、

    James

  • 请注意,本文内容源自机器翻译,可能存在语法或其它翻译错误,仅供参考。如需获取准确内容,请参阅链接中的英语原文或自行翻译。

    更高级别的是、由于您使用 PQ4输出 DIVSCLK、因此您需要移除 LaunchPad 上的 JP6跳线。 如果已组装、JP6跳线将 PQ4连接到 U4 (TPS2052B 配电开关)。 通常、PQ4似乎被配置为一个单独的引脚中断、用于指示 USB 总线上的电源故障。

    此致、

    James

  • 请注意,本文内容源自机器翻译,可能存在语法或其它翻译错误,仅供参考。如需获取准确内容,请参阅链接中的英语原文或自行翻译。

    James、

    我从 udpecho 示例(http://dev.ti.com/tirex/explore/node?node=AO9kl8xCFWi6SjW0C3fEqQ__J4.hfJy__LATEST)开始。  在 CCS Resource Explorer 中、它位于:

    主页/软件/SimpleLink MSP432E4 SDK (4.10.00.13)/Examples/Developement 工具/MSP432E401Y LaunchPad/网络服务/udpecho

    我还在使用 CCS v10.0.0

    -Phil

  • 请注意,本文内容源自机器翻译,可能存在语法或其它翻译错误,仅供参考。如需获取准确内容,请参阅链接中的英语原文或自行翻译。

    谢谢你。  我注意到了这一点、并且已经移除了跳线。

  • 请注意,本文内容源自机器翻译,可能存在语法或其它翻译错误,仅供参考。如需获取准确内容,请参阅链接中的英语原文或自行翻译。

    您好、Phil、

    [引用用户="Philip Baltz1"]

    我从 udpecho 示例(http://dev.ti.com/tirex/explore/node?node=AO9kl8xCFWi6SjW0C3fEqQ__J4.hfJy__LATEST)开始。  在 CCS Resource Explorer 中、它位于:

    主页/软件/SimpleLink MSP432E4 SDK (4.10.00.13)/Examples/Developement 工具/MSP432E401Y LaunchPad/网络服务/udpecho

    我还在使用 CCS v10.0.0

    [/报价]

    谢谢。 这对于您确切了解所使用的项目非常有帮助。 我很快就找到了。

    [引用用户="Philip Baltz1"]

    由于某种原因、编译器无法找到此#define。  我怀疑这可能是因为 pin_map.h 以对"#ifdef __MSP432E401Y__"的检查开头、我认为该检查未定义。  定义__MSP432E401Y__的最佳位置在哪里?  我可以在所有#include 之前的主文件中执行该操作、但由于这是 TI 定义的全局变量、因此似乎有更好的定义位置。

    [/报价]

    您的发展方向正确。 我发现您需要将器件器件型号添加到 ARM 编译器标志中。

    • 在 CCS 中、右键点击工程文件夹、然后点击"Properties"。
    • 在"Build"下、单击"ARM Compiler">"Edit Flags..." (右下角)
    • 粘贴"-define=__MSP432E401Y_"、同时在其他标志之间保留一个空格
    • 单击"确定"、然后单击"应用并关闭"

    这将解决"标识符 GPIO_PQ4_DIVSCLK 未定义"构建错误。

    但是、由于您在 TI-RTOS 项目中使用一些 DriverLib 函数、您还需要添加一个内容、否则会遇到另一个错误。 将以下包含路径添加到您的'main_tirtos.c'文件中。 我执行了相同的操作、没有看到任何构建错误、因此您也不应该这样做。

    /* DriverLib 包括*/
    #include 

    希望这对您有所帮助!

    此致、

    James

  • 请注意,本文内容源自机器翻译,可能存在语法或其它翻译错误,仅供参考。如需获取准确内容,请参阅链接中的英语原文或自行翻译。

    谢谢 James。  我知道标志中有某个位置可以预先定义符号、但无法记住它的位置。  现在一切看起来都很好。

    -Phil