查看: 1860|回复: 5

[求助] 新手关于SDK包中结构体+预编译的问题

[复制链接]
  • TA的每日心情
    无聊
    2018-9-30 09:38
  • 签到天数: 10 天

    [LV.3]偶尔看看II

    7

    主题

    29

    帖子

    3

    注册会员

    Rank: 2

    积分
    107
    最后登录
    2019-4-19
    发表于 2018-9-30 10:29:41 | 显示全部楼层 |阅读模式
    目前在看使用EDMA的UART例子,所使用的芯片为Mkv31F256VLL12。

    贴上fsl_uart.h上面的结构体定义部分,如下定义一个结构体。可以配置UART的波特率等等,
    问题
    1.下面程序的预编译有什么用?为什么要这么写?
    2.我自己猜测回答自己的第一个问题,如果#if 后面为真,是不是结构体会多一个变量?也就是说如果定义了FSL_FEATURE_UART_HAS_STOP_BIT_CONFIG_SUPPORT并且这个东西为1才会编译后面的语句,结构体才会多一个变量。
    3.feature.h头文件里已经定义了FSL_FEATURE_UART_HAS_STOP_BIT_CONFIG_SUPPORT为0,是不是这个预编译永远不会执行?

    #if defined(FSL_FEATURE_UART_HAS_STOP_BIT_CONFIG_SUPPORT) && FSL_FEATURE_UART_HAS_STOP_BIT_CONFIG_SUPPORT
        uart_stop_bit_count_t stopBitCount; /*!< Number of stop bits, 1 stop bit (default) or 2 stop bits  */
    #endif         



    完整结构体定义如下:

    typedef struct _uart_config
    {
        uint32_t baudRate_Bps;         /*!< UART baud rate  */
        uart_parity_mode_t parityMode; /*!< Parity mode, disabled (default), even, odd */
    #if defined(FSL_FEATURE_UART_HAS_STOP_BIT_CONFIG_SUPPORT) && FSL_FEATURE_UART_HAS_STOP_BIT_CONFIG_SUPPORT
        uart_stop_bit_count_t stopBitCount; /*!< Number of stop bits, 1 stop bit (default) or 2 stop bits  */
    #endif
    #if defined(FSL_FEATURE_UART_HAS_FIFO) && FSL_FEATURE_UART_HAS_FIFO
        uint8_t txFifoWatermark; /*!< TX FIFO watermark */
        uint8_t rxFifoWatermark; /*!< RX FIFO watermark */
    #endif
    #if defined(FSL_FEATURE_UART_HAS_MODEM_SUPPORT) && FSL_FEATURE_UART_HAS_MODEM_SUPPORT
        bool enableRxRTS; /*!< RX RTS enable */
        bool enableTxCTS; /*!< TX CTS enable */
    #endif
        uart_idle_type_select_t idleType; /*!< IDLE type select. */
        bool enableTx;                    /*!< Enable TX */
        bool enableRx;                    /*!< Enable RX */
    } uart_config_t;

    其中诸如此类FSL_FEATURE_UART_HAS_STOP_BIT_CONFIG_SUPPORT的变量定义可在MKV31F51212.feature.h头文件中找到。
    /* @brief 2 bits long stop bit is available. */
    #define FSL_FEATURE_UART_HAS_STOP_BIT_CONFIG_SUPPORT     (0)


    我知道答案 目前已有5人回答
    该会员没有填写今日想说内容.
    回复

    使用道具 举报

    该用户从未签到

    656

    主题

    6312

    帖子

    0

    超级版主

    Rank: 8Rank: 8

    积分
    20161
    最后登录
    2024-5-7
    发表于 2018-9-30 11:21:47 | 显示全部楼层
    SDK总体设计理念是大一统,会支持原来越多的芯片,但是各芯片之间又是有诸多的不同,所以会定义很多的宏定义来区别对待,纯属个人想法
    回复 支持 反对

    使用道具 举报

  • TA的每日心情
    无聊
    2018-9-30 09:38
  • 签到天数: 10 天

    [LV.3]偶尔看看II

    7

    主题

    29

    帖子

    3

    注册会员

    Rank: 2

    积分
    107
    最后登录
    2019-4-19
     楼主| 发表于 2018-9-30 12:38:03 | 显示全部楼层
    小恩GG 发表于 2018-9-30 11:21
    SDK总体设计理念是大一统,会支持原来越多的芯片,但是各芯片之间又是有诸多的不同,所以会定义很多的宏定 ...

    是不是说现在这款芯片不需要用到结构体中的某个变量,但是在以后的芯片迭代过程中这个位说不定会在某款芯片中有,现在只是打个预防针?
    该会员没有填写今日想说内容.
    回复 支持 反对

    使用道具 举报

    该用户从未签到

    656

    主题

    6312

    帖子

    0

    超级版主

    Rank: 8Rank: 8

    积分
    20161
    最后登录
    2024-5-7
    发表于 2018-9-30 13:42:13 | 显示全部楼层
    wxb1847571919 发表于 2018-9-30 12:38
    是不是说现在这款芯片不需要用到结构体中的某个变量,但是在以后的芯片迭代过程中这个位说不定会在某款芯 ...

    可以这么理解
    回复 支持 反对

    使用道具 举报

  • TA的每日心情
    无聊
    2018-9-30 09:38
  • 签到天数: 10 天

    [LV.3]偶尔看看II

    7

    主题

    29

    帖子

    3

    注册会员

    Rank: 2

    积分
    107
    最后登录
    2019-4-19
     楼主| 发表于 2018-9-30 15:20:18 | 显示全部楼层

    但是特别奇怪的是预编译没有通过即#if defined(xx)&& xx 为假,虽然定义了但是xx=0,后面的变量应该不存在于结构体中,在下面sdk例程中填充这个结构体的时候又定义了这个变量。这是怎么回事呢?
    该会员没有填写今日想说内容.
    回复 支持 反对

    使用道具 举报

  • TA的每日心情
    无聊
    2018-9-30 09:38
  • 签到天数: 10 天

    [LV.3]偶尔看看II

    7

    主题

    29

    帖子

    3

    注册会员

    Rank: 2

    积分
    107
    最后登录
    2019-4-19
     楼主| 发表于 2018-9-30 15:38:47 | 显示全部楼层
    感觉自带的驱动文件里面的东西还是看不懂 太模糊了。要是有谁能够系统的解释一个sdk里面的例子真的是造福芯片的使用者了
    该会员没有填写今日想说内容.
    回复 支持 反对

    使用道具 举报

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

    本版积分规则

    关闭

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

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

    GMT+8, 2024-5-8 02:50 , Processed in 0.140910 second(s), 27 queries , MemCache On.

    Powered by Discuz! X3.4

    Copyright © 2001-2024, Tencent Cloud.

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