在线时间19 小时
UID3499342
注册时间2018-8-4
NXP金币0
TA的每日心情 | 无聊 2018-9-30 09:38 |
---|
签到天数: 10 天 [LV.3]偶尔看看II
注册会员
- 积分
- 107
- 最后登录
- 2019-4-19
|
目前在看使用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)
|
|