yesiqiu 发表于 2020-12-19 09:08

keil5 仿真调试STM32单片机程序遇到64位局部变量的值无法查...


keil5 仿真调试STM32单片机程序遇到64位局部变量的值无法查看的问题


最近调试一个STM32单片机的程序的时候,用到了32位的变量相乘,所以将要相乘的变量和保存结果的变量都定义成了64位的局部变量。
但是在仿真的时候想看运算的时候这些局部变量的值,结果发现这些局部变量在watch 窗口和stack窗口看到的都是是错误的值,程序的优化等级已经调成了0。
当把这些变量从局部变量改为全局变量的时候,这些值就正常了。请教一下这是什么问题?


然后我把不能查看的局部变量赋值给一个全局变量,去看全局变量的值,全局变量的值就是正确的。


yesiqiu 发表于 2020-12-19 09:15

这是代码

一叶倾城wwq 发表于 2020-12-19 10:41

用串口打印看看呗,我很少去debug,可能是我比较low吧

yesiqiu 发表于 2020-12-21 09:52

一叶倾城wwq 发表于 2020-12-19 10:41
用串口打印看看呗,我很少去debug,可能是我比较low吧

谢谢,串口打印也是一种办法

ayb_ice 发表于 2020-12-21 10:27

优化级别0不等于没有优化,只表示最低级优化,用静态变量,或全局变量

yesiqiu 发表于 2021-1-7 09:53

ayb_ice 发表于 2020-12-21 10:27
优化级别0不等于没有优化,只表示最低级优化,用静态变量,或全局变量

好的,谢谢,学习了
页: [1]
查看完整版本: keil5 仿真调试STM32单片机程序遇到64位局部变量的值无法查...