打印
[技术问题解答]

结构体问题

[复制链接]
754|6
手机看帖
扫描二维码
随时随地手机跟帖
跳转到指定楼层
楼主
moyou3344|  楼主 | 2015-6-5 08:35 | 只看该作者 回帖奖励 |倒序浏览 |阅读模式
用的芯片是MC56F84462,CW版本10.6
工程中定义了结构体,结构体中都是对位的定义,比如
typedef union
{
    unsigned long LONG;
        struct
        {
                unsigned short L_FLAG;//低位
                unsigned short H_FLAG;//高位
        } WORD;
        struct
        {
                unsigned long RELAY                  :1;
                unsigned long SERCH_FR        :1;//
                unsigned long VOL_END         :1;//
                unsigned long SERCH_RST       :1;               
                      unsigned long STOP_E0         :2;
                unsigned long CLR_E0          :1;
                unsigned long FIRST        :1;
                unsigned long START        :2;
                unsigned long RST_START   :1;
                unsigned long VOL_SH_ST       :1;
                unsigned long VOL_SH_END      :1;
                unsigned long SERCH_START     :1;
                unsigned long DC_START      :2;

            unsigned long ABORT_REVERT    :1;
            unsigned long WR_FLASH_START  :1;       
                unsigned long PRE_SHUT        :1;
                unsigned long PASSWORD        :1;//密码锁定
                unsigned long MD     :2;//
                unsigned long RX_DATA_LEN     :1;
                unsigned long TREF       :1;
                unsigned long END        :1;
                unsigned long OWNER_DATA      :1;                       
                unsigned long COMM_END        :1;//
                unsigned long LT_LED         :1;//       
                unsigned long LV_LED         :1;//               
                unsigned long VOL_TRIG        :1;//
                unsigned long VOL_BREAK_FULL  :1;//       
                unsigned long DC_FLAG         :1;//
        } BIT;
       
} flag_val;
程序中对位可以直接进行赋值,但是芯片是怎么执行赋值过程的呢,对于val.BIT.DC_FLAG=1是先进行清零再赋值1?

相关帖子

沙发
cowboy2014| | 2015-6-5 08:47 | 只看该作者
单片机怎么赋值不用管吧,那是编译器干的事情

使用特权

评论回复
板凳
moyou3344|  楼主 | 2015-6-5 08:50 | 只看该作者
cowboy2014 发表于 2015-6-5 08:47
单片机怎么赋值不用管吧,那是编译器干的事情

主要是我现在出现问题了,我将结构体中对位的赋值换成不是结构体形式赋值就不会出现问题,所以想知道为什么会出现这种状况。

使用特权

评论回复
地板
cowboy2014| | 2015-6-5 08:57 | 只看该作者
moyou3344 发表于 2015-6-5 08:50
主要是我现在出现问题了,我将结构体中对位的赋值换成不是结构体形式赋值就不会出现问题,所以想知道为什 ...

你可以单步运行一下试试,看看结构体的赋值和不是结构体形式的赋值最终有什么不同

使用特权

评论回复
5
moyou3344|  楼主 | 2015-6-5 09:07 | 只看该作者
cowboy2014 发表于 2015-6-5 08:57
你可以单步运行一下试试,看看结构体的赋值和不是结构体形式的赋值最终有什么不同 ...

恩,有道理啊,我先试试

使用特权

评论回复
6
FSL_TICS_Robin| | 2015-6-9 10:19 | 只看该作者
非常感谢你关于DSC的技术问题。如果你没有其他问题,我们将此帖默认为已解决.

使用特权

评论回复
7
芙蓉洞| | 2015-6-10 08:45 | 只看该作者
楼主问题解决了吗?想了解一下

使用特权

评论回复
发新帖 我要提问
您需要登录后才可以回帖 登录 | 注册

本版积分规则

7

主题

28

帖子

0

粉丝