【发布时间】:2017-08-24 01:20:00
【问题描述】:
我目前正在为嵌入式 UART 程序中的 uart sn-p 代码而苦苦挣扎。
然后我在分析代码时遇到了我无法理解的事情。
第一季度。如果在“结构”中使用“联合”。这样使用有什么好处和目的?
#define __IO volatile
typedef struct {
union {
__IO uint32_t RR;
__IO uint32_t TR;
__IO uint32_t DL;
__IO uint32_t RR_TR_DL;
};
union {
__IO uint32_t DH;
__IO uint32_t IR;
__IO uint32_t DH_IER;
};
} UART_TypeDef;
第二季度。在“struct”中的“struct”中使用“union”的情况下。像这样使用有什么好处和目的是什么?
typedef struct {
union {
struct{
__IO uint32_t CTRLR0;
__IO uint32_t SSI_COMP_VERSION;
union {
__IO uint32_t DR;
__IO uint32_t DR0;
};
__IO uint32_t DR1;
__IO uint32_t RSVD_2;
};
uint8_t RESERVED[0x1000];
};
} SSI_TypeDef;
【问题讨论】:
-
这当然是一个奇特的
union。请注意,DR和 `DR0` 原则上具有相同的值。 -
请引用描述由该 typdef 表示的寄存器的手册。根据具体情况,您可能会发现一些可以被视为“RR”、“TR”或“DL”的东西,然后是可以被视为“DH”或“IR”的东西。