在ARM处理器(HT32F1655)上,寄存器的特定部分需要字访问.从用户手册:
请注意,AHB总线中的所有外设寄存器仅支持字访问.
但是gcc 在打包的结构上生成一些ldrb(加载字节)和strb(存储字节)指令.结构看起来像这样:
typedef union {
struct {
uint32_t CKOUTSRC : 3; //!< CKOUT Clock Source Selection
uint32_t : 5;
uint32_t PLLSRC : 1; //!< PLL Clock Source Selection
uint32_t : 2;
uint32_t CKREFPRE : 5; //!< CK_REF Clock Prescaler Selection
uint32_t : 4;
uint32_t URPRE : 2; //!< USART Clock Prescaler Selection
uint32_t USBPRE : 2; //!< USB Clock Prescaler Selection
uint32_t : 5;
uint32_t LPMOD : 3; //!< Lower Power Mode Status
} …Run Code Online (Sandbox Code Playgroud)