搜索

[LPC] 函数怎么什么意思

[复制链接]
269|4
 楼主 | 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)
{}


使用特权

评论回复
| 2020-3-24 13:30 | 显示全部楼层 | 奖励家园币
判断LPC_UART初始化没有,你上面都定义了自然没用了,结构体里面是定义的uart的相关寄存器,LPC_UART0这玩意应该是uart的基地址

使用特权

评论回复
 楼主 | 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呢

使用特权

评论回复
| 2020-3-25 10:17 | 显示全部楼层 | 奖励家园币
如果你代码没精简错的话,他就是下面这玩意,所以很奇怪,你检查下你自己是不是简化错了漏了啥,宏是不是在不同文件,到底生效了没
if (LPC_UART0 == LPC_UART0)
{}
else if ((LPC_UART1_TypeDef *)LPC_UART0== LPC_UART1)
{}

使用特权

评论回复
| 2020-3-30 09:07 | 显示全部楼层 | 奖励家园币
zhuludiqing 发表于 2020-3-24 21:41
LPC_UART是用#define定义的宏定义,已经是LPC_UART0了,后面这个判断是不是就没意义了?宏定义还可以被结 ...

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

使用特权

评论回复
扫描二维码,随时随地手机跟帖
您需要登录后才可以回帖 登录 | 注册

本版积分规则

我要发帖 投诉建议 创建版块 申请版主

快速回复

您需要登录后才可以回帖
登录 | 注册
高级模式

论坛热帖

关闭

热门推荐上一条 /4 下一条

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