Keil5在main.c里面创建变量无论是什么类型的变量或是局部还是全局变量debug时变量都是无法查看
在Keil5中,debug时无法查看变量的原因可能有以下几种:
编译器优化问题:在编译器优化级别设置为较高程度时,可能会导致变量被优化掉,从而无法在debug时查看。此时需要将编译器优化级别调整到较低水平,以便在debug时能够正确查看变量。
变量作用域问题:如果变量是局部变量,在函数结束后将被销毁,这也意味着不能在debug时访问该变量。在对其它作用域的变量进行debug时,需要确保在代码执行到那个变量时才可以使用debug功能对其进行访问。
未启用debug信息选项:在进行程序编译时,需要启用生成debug信息的选项。若不启用,debug信息就无法记录,因此无法在debug时查看变量。在编译过程中选择带有-debug的编译选项,或是在链接阶段包含符号表、调试信息库等文件,可以帮助解决这个问题。
Keil版本兼容问题:可能出现某些版本的Keil安装包中存在一些问题,导致没有正确支持强大的debug功能。此时可以尝试更新到最新版本的Keil软件并重新编译程序,同时检查是否有适当的调试仿真器连接。
总之,在debug时无法查看变量时,需要进行多方面的排查和分析,最终定位到问题所在并采取相应的解决措施。
第1处:选择硬件在线调试
下载调试器的选择不用多说,主要说一下后面“Setting”。
很多人常用J-Link下载调试器,而调试STM32时,可以使用四线SWD模式。如果使用J-Link进行SWD调试。这个时候就需要在“Setting”里面选择“SW”模式,如下如:
第2处:选择硬件在线调试
Load Application at Startup:启动时加载应用程序。
Run to main():程序执行到main()函数。
进入调试模式时,程序自动运行到main函数处。
Initialization File:加载、编辑初始化文件。
第3处:复位调试会话设置(Restore Debug Session Settings)
这里复位设置就是恢复设置的意思,如果勾选上,点击一下“复位”就会恢复到之前的状态。包括:断点Breakpoints、窗口Watch Windows、性能分析器 Performance Analyzer、内存窗口Memory Window、工具箱Toolbox、系统查阅器System Viewer等。
第4处:DLL文件(最好默认)
这里的配置属于Keil自身的配置,最好不要修改。
CPU/Driver DLL - Parameter:CPU驱动文件和参数。
Dialog DLL - Parameter:会话框DLL文件和参数。
解决方案: 1. 确认debug处是否正确的选中了你使用的调试工具,如JLINK等。同时点击Settings,进入Port选项,并选择你的调试接口类型,如JTAG或SWD。 2. 进入Flash Download选项,并添加你的设备对应的Flash大小,如STM32F103C8T6的Flash大小为128k。 3. 点击按钮打开配置面板,并在Target栏确定单片机的晶振频率,其他保持默认。 4. 切换到Debug选项卡,按照如下配置进行设置: - Debugger选择你使用的调试工具,如JLINK; - Use:选择SWJ表示使用JTAG作为调试接口; - Settings:选择对应的调试接口和速率; - 星号(*):选中该项表示开启芯片调试模式; - Download:选择Use flash loader(s)并添加相关文件; - Initialization File:选择你的单片机对应的初始化文件。 5. 点击OK完成Debug环境配置。 6. 进入main.c文件,在你想查看变量值的位置添加断点,如在变量定义语句前或使用变量的语句前。 7. 进入Debug模式,运行程序,程序会停在你设置的断点处。打开Variable窗口,即可查看变量的值。
注意:不同单片机的调试环境配置可能存在差异。如果遇到问题,请参考相关的单片机手册或官方文档。
通常是被优化了,如果你定义一个变量,这个变量的变化明显不影响任何输出,那编译器就会把它优化。
如果你只是想练习语法,可以在C语言设置里,把优化等级设置为0,或者变量定义的时候加上volatile。