联合/结构 (ARM) - 内存空间分配

问题描述

早上好,

我正在尝试创建这种样式的日期结构:

//结构体1

union{
    struct{
        union{
            struct{
                bool interrupt_receive;
                bool fifo_mode;
                bool enable;
                bool bits_14_mode;
                bool int_source_readed;
                bool void6;
                                bool void7;
                                bool void8;
            };
            unsigned char registro;
        }REG_CTRL_FLG;

        union{
            struct{
                unsigned int REG_CTRL_TIMEH;
                unsigned int REG_CTRL_TIMEL;
            };
            unsigned short REG_CTRL_TIME;
        };

        unsigned int threshold; //Para pruebas pendiente de eliminar
        
        //AXIS_STRUCT data_axis;   
        //AXIS_EXTEND_STRUCT data_full_axis;
    }registros_acelerometro;
    unsigned int registro[3];
}ACELEROMETRO;

//结构体2

typedef union{
    
    struct{

        unsigned char dlc_0;

        union{
            struct{
                unsigned char p15:1;
                unsigned char p14:1;
                unsigned char p13:1;
                unsigned char p12:1;
                unsigned char p11:1;
                unsigned char p10:1;
                unsigned char p9:1;             
                unsigned char p8:1;

                unsigned char p7:1;
                unsigned char p6:1;
                unsigned char p5:1;
                unsigned char p4:1;
                unsigned char p3:1;
                unsigned char p2:1;
                unsigned char p1:1;
                unsigned char p0:1;
            };
            unsigned short p;
        }pulsadores;

        union{
            struct{
                unsigned char lb0:1;
                unsigned char lb1:1;
                unsigned char ls0:1;
                unsigned char ls1:1;
                unsigned char iluminacion:1;
                unsigned char completo:1;
                unsigned char sobrecarga:1;
                unsigned char void7:1;
            }registro_cabina;
        unsigned char estado_cabina;
        };

        unsigned char dlc_4;

    }registros_can_data;

    unsigned char can_data[5];
}TRESA_PULS;

struct 1,我用过 STM32F7、ARM Compiler 6.11 和 Keil MDK 5.21,没有任何问题,但是我在 struct 2 中使用的配置却给我带来了一些问题

包含 int 结构的联合,似乎需要额外的内存空间才能工作,这会扭曲结构。

我一直在想,但我没有发现错误

你知道有什么变化吗? 是否有应该使用的预处理顺序? 你们中有人发生过吗? 你看到什么问题了吗?

感谢您的帮助和时间。 亲切的问候。

解决方法

暂无找到可以解决该程序问题的有效方法,小编努力寻找整理中!

如果你已经找到好的解决方法,欢迎将解决方案带上本链接一起发送给小编。

小编邮箱:dio#foxmail.com (将#修改为@)