我正在使用HCS12 MCU,这是该库的一部分。我只是想知道什么 1U,2U,4U,8U ......在此代码中表示。我还在学习如何使用课程,请尝试用外行术语来解释。
我的猜测: 这只是意味着哪个位设置为高? 1U = 00000001 2U = 00000010 ...
这会叫什么?
由于
typedef union {
byte Byte;
struct {
byte :1;
byte ADR1 :1; /* Slave Address Bit 1 */
byte ADR2 :1; /* Slave Address Bit 2 */
byte ADR3 :1; /* Slave Address Bit 3 */
byte ADR4 :1; /* Slave Address Bit 4 */
byte ADR5 :1; /* Slave Address Bit 5 */
byte ADR6 :1; /* Slave Address Bit 6 */
byte ADR7 :1; /* Slave Address Bit 7 */
} Bits;
struct {
byte :1;
byte grpADR_1 :7;
} MergedBits;
} IBADSTR;
extern volatile IBADSTR _IBAD @(REG_BASE + 0x000000E0UL);
#define IBAD _IBAD.Byte
#define IBAD_ADR1 _IBAD.Bits.ADR1
#define IBAD_ADR2 _IBAD.Bits.ADR2
#define IBAD_ADR3 _IBAD.Bits.ADR3
#define IBAD_ADR4 _IBAD.Bits.ADR4
#define IBAD_ADR5 _IBAD.Bits.ADR5
#define IBAD_ADR6 _IBAD.Bits.ADR6
#define IBAD_ADR7 _IBAD.Bits.ADR7
#define IBAD_ADR_1 _IBAD.MergedBits.grpADR_1
#define IBAD_ADR IBAD_ADR_1
#define IBAD_ADR1_MASK 2U
#define IBAD_ADR2_MASK 4U
#define IBAD_ADR3_MASK 8U
#define IBAD_ADR4_MASK 16U
#define IBAD_ADR5_MASK 32U
#define IBAD_ADR6_MASK 64U
#define IBAD_ADR7_MASK 128U
#define IBAD_ADR_1_MASK 254U
#define IBAD_ADR_1_BITNUM 1U
答案 0 :(得分:6)
它定义了无符号整数literal。您还可以使用unsigned long integer
查看他们将十六进制文字定义为0x...UL
的位置。
如果您想知道它们产生的位模式,只需将十进制文字转换为等效的十六进制或二进制文字。 1U
分别以十六进制和二进制形式变为0x01U
和01b
1 。
另一个更常见的文字使用f
- 后缀,即1.0f
之类的单精度浮点文字。
<子> 1。仅供参考,不是标准
的实际文字答案 1 :(得分:1)
它们只是整数常量。 U
后缀使其成为无符号整数而不是整数。
答案 2 :(得分:0)