搜索
bottom↓
回复: 18

请问STM32 4个数据相加之后 赋值到一个变量 结果为什么会变了?

[复制链接]

出0入0汤圆

发表于 2022-5-6 14:42:39 | 显示全部楼层 |阅读模式


所有变量都是uint32类型

仿真截图 如下:


这是啥原因?

本帖子中包含更多资源

您需要 登录 才可以下载或查看,没有帐号?注册

x

阿莫论坛20周年了!感谢大家的支持与爱护!!

月入3000的是反美的。收入3万是亲美的。收入30万是移民美国的。收入300万是取得绿卡后回国,教唆那些3000来反美的!

出20入186汤圆

发表于 2022-5-6 14:49:08 | 显示全部楼层
有用多线程么?有在中断里修改数据么?如果有则加上 volatile,你相加的代码在哪儿?看看

出0入0汤圆

 楼主| 发表于 2022-5-6 14:54:47 | 显示全部楼层
yuyu87 发表于 2022-5-6 14:49
有用多线程么?有在中断里修改数据么?如果有则加上 volatile,你相加的代码在哪儿?看看 ...
(引用自2楼)

这些都没有  在MAIN 前面几行 初始化的时候,
这几个数据就是用于生成编译日期和版本号的

出0入0汤圆

 楼主| 发表于 2022-5-6 14:57:08 | 显示全部楼层
yuyu87 发表于 2022-5-6 14:49
有用多线程么?有在中断里修改数据么?如果有则加上 volatile,你相加的代码在哪儿?看看 ...
(引用自2楼)

截图的第4行 就是相加的

出1310入193汤圆

发表于 2022-5-6 16:40:14 | 显示全部楼层
static  加起来看看  
优化等级设置也会造成这种情况

出0入16汤圆

发表于 2022-5-6 16:47:14 | 显示全部楼层
SSD的地址与buf地址是否有冲突,直针越界?

出0入0汤圆

发表于 2022-5-6 17:01:14 来自手机 | 显示全部楼层
常量后面加个u试试,比如100U

出0入213汤圆

发表于 2022-5-6 19:17:15 | 显示全部楼层
同时将SSD1,SSD2, SSD3,Version和SSD都显示出来看一下,然后再打开计算器手工算一下。检查有没有溢出。

出0入0汤圆

 楼主| 发表于 2022-5-6 20:27:13 | 显示全部楼层
jyrpxj 发表于 2022-5-6 19:17
同时将SSD1,SSD2, SSD3,Version和SSD都显示出来看一下,然后再打开计算器手工算一下。检查有没有溢出。 ...
(引用自8楼)

都看了 没有溢出  

出0入0汤圆

 楼主| 发表于 2022-5-6 20:28:44 | 显示全部楼层
281229961 发表于 2022-5-6 20:27
都看了 没有溢出
(引用自9楼)

现在把最后一个变量写成 常数就行
最后一个变量 其实很小 0-100之间变化
好奇怪

出0入0汤圆

发表于 2022-5-6 20:59:56 | 显示全部楼层
281229961 发表于 2022-5-6 20:28
现在把最后一个变量写成 常数就行
最后一个变量 其实很小 0-100之间变化
好奇怪
(引用自10楼)

估计是观测刷新和程序运行不同步,可以在那个赋值下面放一个断点看看

出0入0汤圆

 楼主| 发表于 2022-5-6 23:33:24 | 显示全部楼层
modbus 发表于 2022-5-6 20:59
估计是观测刷新和程序运行不同步,可以在那个赋值下面放一个断点看看
(引用自11楼)

截图里放了断点  还单步执行了几步啦

出0入213汤圆

发表于 2022-5-6 23:41:14 | 显示全部楼层
SSD1,SSD2, SSD3,Version各是多少值?

出0入0汤圆

 楼主| 发表于 2022-5-7 00:00:59 | 显示全部楼层
SSD1=2022000000  --->0x78854580
SSD2=50000            --->0x0000c350
SSD3=600                --->0x00000258
Version=17              --->0x00000011
加起来结果应该是            0x78860B39

出0入0汤圆

发表于 2022-5-7 00:29:14 | 显示全部楼层
代码没放完整,确定 SSD = ... 那行执行过了吗?
如果是看 SSD = ... 那行的结果,不应该是在这句的下一行打断点看吗

出0入0汤圆

发表于 2022-5-7 09:29:56 | 显示全部楼层
我遇到过类似的,执行计算公式以后,存放结果的变量地址变了

出0入0汤圆

发表于 2022-5-7 10:17:37 | 显示全部楼层
堆栈溢出、数据越界都有可能
这一点代码看不出来啥

出1310入193汤圆

发表于 2022-5-7 10:23:44 | 显示全部楼层
运算结果打印出来看看

出5入0汤圆

发表于 2022-5-7 23:38:39 | 显示全部楼层
luohui5003 发表于 2022-5-6 17:01
常量后面加个u试试,比如100U
(引用自7楼)

楼主试试啊
回帖提示: 反政府言论将被立即封锁ID 在按“提交”前,请自问一下:我这样表达会给举报吗,会给自己惹麻烦吗? 另外:尽量不要使用Mark、顶等没有意义的回复。不得大量使用大字体和彩色字。【本论坛不允许直接上传手机拍摄图片,浪费大家下载带宽和论坛服务器空间,请压缩后(图片小于1兆)才上传。压缩方法可以在微信里面发给自己(不要勾选“原图),然后下载,就能得到压缩后的图片】。另外,手机版只能上传图片,要上传附件需要切换到电脑版(不需要使用电脑,手机上切换到电脑版就行,页面底部)。
您需要登录后才可以回帖 登录 | 注册

本版积分规则

手机版|Archiver|amobbs.com 阿莫电子技术论坛 ( 粤ICP备2022115958号, 版权所有:东莞阿莫电子贸易商行 创办于2004年 (公安交互式论坛备案:44190002001997 ) )

GMT+8, 2024-4-26 05:44

© Since 2004 www.amobbs.com, 原www.ourdev.cn, 原www.ouravr.com

快速回复 返回顶部 返回列表