![]() |
1
2
就我个人而言,出于可移植性的原因,我尽量避免使用位字段。相反,我倾向于使用位掩码,以便可以显式地控制使用哪些位。 例如(假设位顺序正确)。
然后可以根据需要生成掩码,并分配、读取或测试值。您可以为宏选择更好的名称。 希望这有帮助。 |
![]() |
2
1
我建议您不要将位字段声明与硬件寄存器的地址混淆。 union/struct声明位字段的排列方式,然后在声明指向此类结构的指针时指定寻址和访问限制。 // foo.h // Declare struct, declare pointer to hw reg struct com_setup_t { unsigned BRP:6; unsigned SJW:2; }; extern volatile near struct com_setup_t *BaudRateConfig1; // foo.c // Initialise pointer volatile near struct com_setup_t *BaudRateConfig1 = (volatile near struct com_setup_t *)0xfff...; // access hw reg foo() { ... BaudRateConfig1->BRP = 3; ... } 关于near/far,我假设默认值是near,除非指定了far,除非您可以使用编译器开关将默认指针大小设置为far。 |
![]() |
cobb208 · Malloc正在为释放指针引发错误 2 年前 |
![]() |
kernel · 打印结构数组内容时出错 2 年前 |
![]() |
mwitz · 在Rust中无法正确写入结构的函数属性 2 年前 |
![]() |
Ulysses · 无法访问结构字段(Rust) 2 年前 |
![]() |
Tor · 使用Box<None>值初始化struct 2 年前 |
![]() |
Yestin · Golang如何初始化数组结构[duplicate] 2 年前 |