你的浏览器版本过低,可能导致网站不能正常访问!
为了你能正常使用网站功能,请使用这些浏览器。

仿真发现变量值与位值对应不上

[复制链接]
scfor123456 提问时间:2020-1-2 16:38 /
变量是这样定义的:
struct DI_FUNC diSelectFunc;    // 是否有DI端子选择了相应的功能

struct DI_FUNC
{
    union DI_FUNC1  f1;
    union DI_FUNC2  f2;
};
struct DI_FUNC1_BITS
{
    Uint16 noFunc:1;                // 0
    Uint16 fwd:1;                   // 1
    Uint16 rev:1;                   // 2
    Uint16 tripleLineCtrl:1;        // 3
    Uint16 fwdJog:1;                // 4
    Uint16 revJog:1;                // 5
Uint16 closePwm:1;              // 6
Uint16 emergencyStop:1;         // 7
Uint16 errorReset:1;            // 8
Uint16 externalErrOpenIn:1;     // 9
    Uint16 up:1;                    // 10
    Uint16 down:1;                  // 11
Uint16 clearUpDownFrq:1;        // 12  
    Uint16 localOrRemote:1;         // 13  
Uint16 diOrComm:1;              // 14
    Uint16 multiSet:4;              // 15:18
Uint16 accDecTimeSrc:2;         // 19:20
    Uint16 runPause:1;              // 21  
    Uint16 pidPauseI:1;             // 22
Uint16 pidPause:1;              // 23
Uint16 pidDirRev:1;             // 24
    Uint16 pidChg:1;                // 25
Uint16 rsvd1:5;     // 26:30
Uint16 frqOk:1;                 // 31
};
union DI_FUNC1
{
    Uint32                  all;
    struct DI_FUNC1_BITS    bit;
};

仿真时diSelectFunc.f1.all和bit对不上,也不存在没有更新的问题,bit位变化时显示值会变化。
现在发现从bit15出现问题,比如说变量值第15位是1,但对应的bit位第15位却是0,很奇怪的现象。

微信图片_20200102162739.png
收藏 评论3 发布时间:2020-1-2 16:38

举报

3个回答
mylovemcu 回答时间:2020-1-2 18:59:48
数据长度不一致导致的  联合体中all用的是32位的数据  DI_FUNC1_BITS结构体中使用的是16位的数据

把uint16换成uint32应该就没问题了

评分

参与人数 1蝴蝶豆 +3 收起 理由
STMCU + 3

查看全部评分

慎微 回答时间:2020-1-3 09:05:29
联合体的变量要小心,大家共用内存结构单元,一个变了影响另一个。
设法将所有联合体变量改成结构体变量,如果变量值与位值对应上,那就是联合体的变量相互影响了
scfor123456 回答时间:2020-1-3 09:07:23
mylovemcu 发表于 2020-1-2 18:59
数据长度不一致导致的  联合体中all用的是32位的数据  DI_FUNC1_BITS结构体中使用的是16位的数据

把uint16 ...

是这个问题,感谢

所属标签

相似问题

关于
我们是谁
投资者关系
意法半导体可持续发展举措
创新与技术
意法半导体官网
联系我们
联系ST分支机构
寻找销售人员和分销渠道
社区
媒体中心
活动与培训
隐私策略
隐私策略
Cookies管理
行使您的权利
官方最新发布
STM32N6 AI生态系统
STM32MCU,MPU高性能GUI
ST ACEPACK电源模块
意法半导体生物传感器
STM32Cube扩展软件包
关注我们
st-img 微信公众号
st-img 手机版