查看: 4477|回复: 0

[分享] MCUXpresso 配置串口的一个宏定义问题

[复制链接]
  • TA的每日心情

    2025-5-29 09:38
  • 签到天数: 632 天

    连续签到: 1 天

    [LV.9]以坛为家II

    94

    主题

    1639

    帖子

    2

    版主

    Rank: 7Rank: 7Rank: 7

    积分
    4470

    热心会员

    最后登录
    2025-6-10
    发表于 2020-12-8 10:39:06 | 显示全部楼层 |阅读模式
    最近我在弄LPC51u68的板子,导出SDK里面最简的GPIO例程,编译通过,但是串口不输出,仅仅控制台输出。工程默认定义的SDK_DEBUGCONSOLE=0,
    1. #define DEBUGCONSOLE_REDIRECT_TO_TOOLCHAIN 0U /*!< Select toolchain printf and scanf. */
    2. #define DEBUGCONSOLE_REDIRECT_TO_SDK       1U /*!< Select SDK version printf, scanf. */
    3. #define DEBUGCONSOLE_DISABLE               2U /*!< Disable debugconsole function. */
    复制代码

    然后我就全局查找:
    A11.jpg
    发现仅在:
    fsl_debug_console.h里面的:
    1. #ifndef SDK_DEBUGCONSOLE
    2. #define SDK_DEBUGCONSOLE 1U
    3. #endif
    复制代码

    按道理,我没有定义啊,SDK_DEBUGCONSOLE 应该为1才是啊。
    但是默认的SDK_DEBUGCONSOLE=0 又是从哪里出现的?导致串口初始化不能正真的执行,仅在控制台打印。

    1. <blockquote>status_t BOARD_InitDebugConsole(void)
    复制代码


    强行在fsl_debug_console.h里面的:增加#define SDK_DEBUGCONSOLE 1 串口能正常打印输出,但上面的一个初始的预定义0,到底在哪,至今还不知道在哪了?
    打开工程的属性,打开预编译:
    YCL.png
    发现确实存在,但是我把它修改为1后,然后在我的工程里面注释掉之前的#define SDK_DEBUGCONSOLE 1,结果还是默认SDK_DEBUGCONSOLE为0.
    感觉就像没有执行一样。这就有点不理解了,难道还有其他地方?以那个预编译指令的界面好像有几个可以打勾的没勾选上。我们打下勾:
    ZZZZZ.png
    再看代码,已经默认为1了。我再把勾去掉再编译一下,这下不打勾也正常了,是不是之前的那次预编译根本就没起作用啊。当然我们正常还是要拍去掉勾的,不然鬼知道又要出什么问题呢。
    好了今天的一个小小的宏定义预配置还坑了我2个小时。说白了还是对IDE不熟悉啊。当然不考虑这些乱七八糟的,像上面的重新定义下宏也能用,不过感觉不正常,总想查看个究竟。这种宏定义直接放预编译里面也是够了,要是我的习惯,除非跟内核、公共函数相关的,其余的影响外设操作的都不放进去。






    哎...今天够累的,签到来了~
    回复

    使用道具 举报

    您需要登录后才可以回帖 注册/登录

    本版积分规则

    关闭

    站长推荐上一条 /3 下一条

    Archiver|手机版|小黑屋|恩智浦技术社区

    GMT+8, 2025-7-22 12:21 , Processed in 0.076568 second(s), 20 queries , MemCache On.

    Powered by Discuz! X3.4

    Copyright © 2001-2024, Tencent Cloud.

    快速回复 返回顶部 返回列表