[LPC] 函数怎么什么意思

[复制链接]
1147|5
 楼主| zhuludiqing 发表于 2020-3-23 23:06 | 显示全部楼层 |阅读模式
请教一下这个函数怎么理解,先一个宏定义,然后定义一个结构体,之后在函数中做判断,这个if.......else if 语句怎么理解,具体代码如下,谢谢各位。
#define LPC_UART        LPC_UART0
typedef struct
{
  union {
  __I  uint8_t  RBR;
  __O  uint8_t  THR;
  __IO uint8_t  DLL;
       uint32_t RESERVED0;
  };
  union {
  __IO uint8_t  DLM;
  __IO uint32_t IER;
  };
  union {
  __I  uint32_t IIR;
  __O  uint8_t  FCR;
  };
  __IO uint8_t  LCR;
       uint8_t  RESERVED1[3];
  __IO uint8_t  MCR;
       uint8_t  RESERVED2[3];
  __I  uint8_t  LSR;
       uint8_t  RESERVED3[3];
  __I  uint8_t  MSR;
       uint8_t  RESERVED4[3];
  __IO uint8_t  SCR;
       uint8_t  RESERVED5[3];
  __IO uint32_t ACR;
       uint32_t RESERVED6;
  __IO uint32_t FDR;
       uint32_t RESERVED7;
  __IO uint8_t  TER;
       uint8_t  RESERVED8[27];
  __IO uint8_t  RS485CTRL;
       uint8_t  RESERVED9[3];
  __IO uint8_t  ADRMATCH;
       uint8_t  RESERVED10[3];
  __IO uint8_t  RS485DLY;
       uint8_t  RESERVED11[3];
  __I  uint8_t  FIFOLVL;
} 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完成功能
您需要登录后才可以回帖 登录 | 注册

本版积分规则

9

主题

33

帖子

2

粉丝
快速回复 在线客服 返回列表 返回顶部