- 1、原创力文档(book118)网站文档一经付费(服务费),不意味着购买了该文档的版权,仅供个人/单位学习、研究之用,不得用于商业用途,未经授权,严禁复制、发行、汇编、翻译或者网络传播等,侵权必究。。
- 2、本站所有内容均由合作方或网友上传,本站不对文档的完整性、权威性及其观点立场正确性做任何保证或承诺!文档内容仅供研究参考,付费前请自行鉴别。如您付费,意味着您自己接受本站规则且自行承担风险,本站不退款、不进行额外附加服务;查看《如何避免下载的几个坑》。如果您已付费下载过本站文档,您可以点击 这里二次下载。
- 3、如文档侵犯商业秘密、侵犯著作权、侵犯人身权等,请点击“版权申诉”(推荐),也可以打举报电话:400-050-0827(电话支持时间:9:00-18:30)。
- 4、该文档为VIP文档,如果想要下载,成为VIP会员后,下载免费。
- 5、成为VIP后,下载本文档将扣除1次下载权益。下载后,不支持退款、换文档。如有疑问请联系我们。
- 6、成为VIP后,您将拥有八大权益,权益包括:VIP文档下载权益、阅读免打扰、文档格式转换、高级专利检索、专属身份标志、高级客服、多端互通、版权登记。
- 7、VIP文档为合作方或网友上传,每下载1次, 网站将根据用户上传文档的质量评分、类型等,对文档贡献者给予高额补贴、流量扶持。如果你也想贡献VIP文档。上传文档
技巧一对全局变量值的监控
在C语言中代码分为全局变量和局部变量,全局变量存储在单片机的RAM里面,局部变量存储在栈里面,调试器可以随时查看修改全局变量,我们可以通过全部变量的值来查看对模块的配置情况,以及变量的赋值情况。这些内容都是入门单片机的工程师就了解到的。但是在实际的项目中这个功能是最基础的也是最关键的。
举几个小例子,在调试的时候,我们需要查看一些局部变量的值,有些情况可以在Locals界面查看,但是这个界面并不能查看所有局部变量的值,为了查看局部变量的值,我们可以新建一个与局部变量相同类型的值,在代码中不断的将局部变量赋值给全部变量,我们就可以通过查看全局变量,间接的查看关键局部变量的值。
在实际的项目中,我们可能要对一些参数进行调参,我们可以不停的修改代码,编译,然后将生产的elf文件烧录到单片机,如果使用这种方法不仅降低工作效率,还有可能不断的烧录代码损坏单片机,最主要是麻烦,让工作及其不爽,此时就可以双击变量值的位置修改全局变量的值,以下图为例,我们在工作中需要不断的修改不同PWM的输出占空比,来找到项目中最需要的占空比,可以先修改DutyCycle的值,然后将Test_Flag置为1或者2来让设置占空比的函数执行一次,使用这个方法,可以大大的提高工作的执行效率。
技巧二Callstack功能的使用
在项目的开发中,时常出现进入Det的情况,可能是我们的配置有错,又或者是赋值有错,因为种种的失误,无可避免的让函数进入Det,函数进入死循环,此刻,CallStack功能就非常的好用,我们可以让函数暂停,然后打开CallStack界面来查看由于那一个函数进入Det,导致函数进入死循环,可以一步一步的解决问题。双节函数在右面对应的窗口就可以进入相应的函数,非常方便调试。
技巧三Memory功能的使用
在查看变量的时候,我们一般使用watch窗口,但是在查看大量数据时,比如SPI的缓存数据使用watch窗口的话,会发现严重的干扰程序的运行,表现为数据刷新缓慢,但是使用Memory就非常棒,刷新非常流畅,所以查看大数据时,采用memory窗口就很有优势了。在项目中由于各种原因,例如调试工具的配置问题,导致下载进入的程序是一致的但是单片机的功能就是不一致,此时就可以通过memory窗口把Flash的数据全部拷贝出来,然后使用工具进行对比来查看烧录进单片机的代码是否一致。
由于时间的原因,暂时分享以上三个开发调试技巧,日后工作中遇到新的调试技巧和常规性的错误,都可以总计出来分享给读者,给大家的开发工作带来便利。
文档评论(0)