STM32F4 UART 半字寻址
试图为 STM32F4 UART 推出我自己的代码。该芯片的一个特点是,如果您像 GNAT 编译器那样使用字节寻址来设置单个位,则半字的另一个字节中的相应位将被设置。数据表说使用半字寻址。有没有办法告诉编译器这样做?我试过 CR1_register'Size use 16;
但这没有效果。写入整个 16 位字有效,但您无法设置命名位。
回答
在 AdaCore Ada Drivers Library中使用的 GNAT 方法是使用 GNAT-only 方面Volatile_Full_Access,GNAT 参考手册中说到
他们的代码是
-- Control register 1
type CR1_Register is record
-- Send break
SBK : Boolean := False;
...
end record
with Volatile_Full_Access, Size => 32,
Bit_Order => System.Low_Order_First;
for CR1_Register use record
SBK at 0 range 0 .. 0;
...
end record;