zhuludiqing 发表于 2020-3-23 23:06

函数怎么什么意思

请教一下这个函数怎么理解,先一个宏定义,然后定义一个结构体,之后在函数中做判断,这个if.......else if 语句怎么理解,具体代码如下,谢谢各位。
#define LPC_UART      LPC_UART0
typedef struct
{
union {
__Iuint8_tRBR;
__Ouint8_tTHR;
__IO uint8_tDLL;
       uint32_t RESERVED0;
};
union {
__IO uint8_tDLM;
__IO uint32_t IER;
};
union {
__Iuint32_t IIR;
__Ouint8_tFCR;
};
__IO uint8_tLCR;
       uint8_tRESERVED1;
__IO uint8_tMCR;
       uint8_tRESERVED2;
__Iuint8_tLSR;
       uint8_tRESERVED3;
__Iuint8_tMSR;
       uint8_tRESERVED4;
__IO uint8_tSCR;
       uint8_tRESERVED5;
__IO uint32_t ACR;
       uint32_t RESERVED6;
__IO uint32_t FDR;
       uint32_t RESERVED7;
__IO uint8_tTER;
       uint8_tRESERVED8;
__IO uint8_tRS485CTRL;
       uint8_tRESERVED9;
__IO uint8_tADRMATCH;
       uint8_tRESERVED10;
__IO uint8_tRS485DLY;
       uint8_tRESERVED11;
__Iuint8_tFIFOLVL;
} LPC_UART1_TypeDef;


if (LPC_UART == LPC_UART0)
{}
else if ((LPC_UART1_TypeDef *)LPC_UART == LPC_UART1)
{}


wono01 发表于 2020-3-24 13:30

判断LPC_UART初始化没有,你上面都定义了自然没用了,结构体里面是定义的uart的相关寄存器,LPC_UART0这玩意应该是uart的基地址

zhuludiqing 发表于 2020-3-24 21:41

wono01 发表于 2020-3-24 13:30
判断LPC_UART初始化没有,你上面都定义了自然没用了,结构体里面是定义的uart的相关寄存器,LPC_UART0这玩 ...

LPC_UART是用#define定义的宏定义,已经是LPC_UART0了,后面这个判断是不是就没意义了?宏定义还可以被结构体指针跟更改吗,否则为什么判断(LPC_UART1_TypeDef *)LPC_UART是否等于LPC_UART1呢

wono01 发表于 2020-3-25 10:17

如果你代码没精简错的话,他就是下面这玩意,所以很奇怪,你检查下你自己是不是简化错了漏了啥,宏是不是在不同文件,到底生效了没
if (LPC_UART0 == LPC_UART0)
{}
else if ((LPC_UART1_TypeDef *)LPC_UART0== LPC_UART1)
{}

光轮TreeOS 发表于 2020-3-30 09:07

zhuludiqing 发表于 2020-3-24 21:41
LPC_UART是用#define定义的宏定义,已经是LPC_UART0了,后面这个判断是不是就没意义了?宏定义还可以被结 ...

已经是LPC_UART0,后面就不会判断了。

ayb_ice 发表于 2020-4-2 13:52

就是移植用的,可以选择使用UART0或UART1完成功能
页: [1]
查看完整版本: 函数怎么什么意思