小编Cha*_*aos的帖子

强制GCC访问带有单词的结构

在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)

c gcc arm

4
推荐指数
1
解决办法
974
查看次数

标签 统计

arm ×1

c ×1

gcc ×1