keil硬件仿真时,显示变量的值错误

来源:百度知道 编辑:UC知道 时间:2024/05/30 07:50:59
我用keil,调试stm32单片机,采用j-link硬件仿真,发现我单步运行时,在watch窗口看变量的值有错误,有时能够更新,有时那个值就不更新,后来,我在程序中用printf把变量的值打印出来,发现,单步调试时,变量的值明显已经变化了(有printf在串口里打印出来了),但watch窗口还是没有更新,我重新在watch窗口删除要观察的变量,再把那变量输一遍,还是没有显示更新后的值,请问这是怎么回事?
多谢flyunlimit,
我的版本是3.62的,以前用过4.0的,结果编译出来的文件太大,放不进去?,结果就不用了,

弱弱的问一下,swj模式怎么设置?是不是硬件也不一样?网上查了点资料,似乎不能用原有的j-link的调试硬件吧?

额~~~刚才发现了我的j-link不支持swj模式。。。。。。。。郁闷啊,只能用printf了

寄存器变量可以实时更新,内存变量只有在第一次断点看到的数据是实际的,此后不再更新。
只是看不到,内部运行当然还是有正常更新,只是看不到而已。
知道怎么处理的说下。。。

JLINK,这个问题我没遇到,但是用STM32的SWJ模式好些,省IO口,还速度快。watch窗口里的变量即便是在片子运行期间都会跟着变化,不是实时的,有滞后,但好过JTAG模式那样停止后才更新。

我是观察16次定时器捕捉的值,存到RAM的自定义数组里。

还有一点,注意MDK的版本,最新的4.0还有问题,用3.8的很不错。3.5以后的才开始支持SWJ模式,最早几个支持STM32的版本在仿真器的驱动上是有BUG的。

ST LINK是单位的,我用过一次就甩了,上面的捕捉,只能看到数组的前8个值,后8个压根不变。