• 结构体多类型共享空间 __packed


    今天映到个问题,DATA保存数据老是中间会空出一些空间来,8位数据指针对不上数据。

      


    #define SHOW_LEN               56
    #define SHOW_ADDR              0x220
    typedef    union
    {
        u8 data[SHOW_LEN];
      __packed struct
      {
        //开始按钮灯
        u16 StartButtonLed_OnTime          :16;     //0-1 开启时间
        u16 StartButtonLed_OffTime        :16;     //2-3 关闭时间
        u8 StartButtonLed_Times            :8;     // 4周期
        //大灯按钮灯
        u16 BigButtonLed_OnTime            :16;     // 5-6开启时间
        u16 BigButtonLed_OffTime           :16;     // 7-8关闭时间
        u8 BigButtonLed_Times              :8;     // 9周期
        //自动驾驶按钮灯
        u16 AutoButtonLed_OnTime           :16;     // a-b开启时间
        u16 AutoButtonLed_OffTime          :16;     // c-d关闭时间
        u8 AutoButtonLed_Times             :8;     // e周期
        //喇叭
        u16 Laba_OnTime                    :16;     // 开启时间
        u16 Laba_OffTime                   :16;     // 关闭时间
        u8 Laba_Times                      :8;      // 周期
        //状态灯
        u16 StateLed_OnTime                :16;     // 开启时间
        u16 StateLed_OffTime               :16;     // 关闭时间
        u8 StateLed_Times                  :8;     // 周期
        u8 StateLed_State                  :8;     // 状态 0空车, 1有客
        //左大灯
        u16 BigLedLeft_OnTime              :16;     // 开启时间
        u16 BigLedLeft_OffTime             :16;     // 关闭时间
        u8 BigLedLeft_Times                :8;     // 周期
        u8  BigLedLeft_TMode               :8;     // 模式  0 近光灯(圈)闪烁 远光灯关闭
                                                   //       1 近光灯(圈)呼吸 远光灯关闭
                                                   //       2 近光灯(圈)关闭 远光灯闪烁
                                                   //       3 近光灯(圈)关闭 远光灯呼吸
                                                   //       4 近光灯(圈)闪烁  远光灯闪烁
                                                   //       5 近光灯(圈)闪烁  远光灯呼吸
                                                   //       6 近光灯(圈)呼吸  远光灯闪烁
                                                   //       7 近光灯(圈)呼吸  远光灯呼吸
        //右大灯
        u16 BigLedRight_OnTime             :16;     // 开启时间  
        u16 BigLedRight_OffTime            :16;     // 关闭时间
        u8 BigLedRight_Times               :8;     // 周期
        u8  BigLedRight_TMode              :8;     // 模式 同上 BigLedLeft_TMode
        //左转向灯
        u16 TurnLedLeft_OnTime             :16;     // 开启时间
        u16 TurnLedLeft_OffTime            :16;     // 关闭时间
        u8 TurnLedLeft_Times               :8;     // 周期
        u8  TurnLedLeft_TMode              :8;     // 模式  0 黄灯转向效果(白灯已关闭)
                                                   //       1 白灯效果(黄灯已关闭)
                                                   //       2 黄转白灯效果(白灯未关闭)
        //右转向灯
        u16 TurnLedRight_OnTime            :16;     // 开启时间
        u16 TurnLedRight_OffTime           :16;      // 关闭时间
        u8 TurnLedRight_Times              :8;     // 周期
        u8  TurnLedRight_TMode             :8;     // 模式  0 黄灯转向效果(白灯已关闭)
                                                   //       1 白灯效果(黄灯已关闭)
                                                   //       2 黄转白灯效果(白灯未关闭)
        //刹车灯
        u16 BrakeLed_OnTime                :16;     // 开启时间
        u16 BrakeLed_OffTime              :16;     // 关闭时间
        u8 BrakeLed_Times                 :8;     // 周期
        //平板
        u8 Pingban_OnOff                   :8;     // 平板电源开关 0关闭 1开启
      } bit;

    }SHOW_ENUM;

  • 相关阅读:
    Python学习笔记十一之一个简单的opencv阈值分割实例,求取圆度、轮廓椭圆拟合
    学单片机有前途吗?
    未来可期!我国保健食品将迎来黄金时期
    从服务间的一次调用分析整个springcloud的调用过程(二)
    【高并发】不得不说的线程池与ThreadPoolExecutor类浅析
    九大装修收纳空间的设计,收藏备用!福州中宅装饰,福州装修
    linux安装&git安装
    Aardio - 调用Python库下载蓝奏盘文件
    将本地代码托管到GitHub仓库中
    #名词区别篇:px、em、rem、rpx、vh、vw、vmin 、vmax、%用法 与 区别
  • 原文地址:https://blog.csdn.net/yemaogu/article/details/128104761