Keil5仿真中监控变量显示异常解决方案分享

在针对stm32f407的硬件仿真时,遇到了监控某个变量时,出现cannot evaluate的问题,在选中view选板下的periodic window update的情况下该变量的值仍然无法实时显示,情况如下图。

针对keil5仿真时,监控变量无法正常显示(cannot evaluate)的心得。_函数返回值

针对keil5仿真时,监控变量无法正常显示(cannot evaluate)的心得。_地址空间_02

第242行的jiaoyan2变量无法显示,经过学习后,发现该变量此时位于中断服务函数内,且定义在其中,此时属于局部变量,而局部变量在程序运行时系统不会给它分配地址空间,只会在函数被调用时参与运算。上图的count_ones函数为一个校验数据位二进制1的计算函数,该函数大致思想是把数据位的二进制1的个数算出来,将其函数返回值赋给jiaoyan2变量,进行后续检验。具体算法此处不做解释。

该问题的解决方法是将局部变量修改为全局变量,即在中断服务函数外部定义它,让它的值能够实时显示在watch1下。

针对keil5仿真时,监控变量无法正常显示(cannot evaluate)的心得。_局部变量_03

此时变量定义在函数外,watch1即可监控到该变量的值。

针对keil5仿真时,监控变量无法正常显示(cannot evaluate)的心得。_函数返回值_04

      学习时还遇到一个小问题,当一个变量需要在函数内做位运算或者加减之类的运算且需要监控它的值时,在把该变量定义在函数外部的前提下,还要将它的初始值定义在函数内部,若将其初始值写在函数外部,每当此函数被调用时,该值不会清零,会在上一次的结果上继续运算。

针对keil5仿真时,监控变量无法正常显示(cannot evaluate)的心得。_函数返回值_05

针对keil5仿真时,监控变量无法正常显示(cannot evaluate)的心得。_函数返回值_06

所以针对一般需要做运算且需要监控的变量,可以把它定义在函数外部,初始化在函数内部。

针对keil5仿真时,监控变量无法正常显示(cannot evaluate)的心得。_函数返回值_07

针对keil5仿真时,监控变量无法正常显示(cannot evaluate)的心得。_函数返回值_08



免责声明:本文系网络转载或改编,未找到原创作者,版权归原作者所有。如涉及版权,请联系删

QR Code
微信扫一扫,欢迎咨询~

联系我们
武汉格发信息技术有限公司
湖北省武汉市经开区科技园西路6号103孵化器
电话:155-2731-8020 座机:027-59821821
邮件:tanzw@gofarlic.com
Copyright © 2023 Gofarsoft Co.,Ltd. 保留所有权利
遇到许可问题?该如何解决!?
评估许可证实际采购量? 
不清楚软件许可证使用数据? 
收到软件厂商律师函!?  
想要少购买点许可证,节省费用? 
收到软件厂商侵权通告!?  
有正版license,但许可证不够用,需要新购? 
联系方式 155-2731-8020
预留信息,一起解决您的问题
* 姓名:
* 手机:

* 公司名称:

姓名不为空

手机不正确

公司不为空