和记娱乐


网站导航

联系我们

和记娱乐

联系人: 

电 话:021-64057486

公司网址:http://www.happy123456789.com

   址:成都市松江区漕河泾松江新兴产业园区研展路丰产支路55号B座803室

邮编:201165


通信知识

您的当前位置: 和记娱乐主页 > 通信知识 >

浅谈单片机调试方法

发布日期:2019-10-21 07:48 来源:和记h88 发布人:和记娱乐 点击:

  举个例子说明它的用法。在低功耗的产品设计中,我们一般采用“睡眠à醒来工作à睡眠à醒来工作”的工作模式,其程序结构如下:

  如果我们在程序醒来时点亮LED,事务处理完毕时熄灭LED,那么我们就能“看见”程序的工作状态,LED将周期性地闪烁。这就是我们称之为可视化管理的原因。(不记得在哪本书上看到“可视化管理”这个概念,我借用一下)

  其实有些仿真器已经提供了这种程序睡眠状态的方法。如果没有提供,就可以用以上方法自行实现。

  它的使用很灵活。比如可以用来在双时钟系统中快时钟的打开和关闭情况(慢时钟一般总是打开,因为要用作实时时钟的时钟源,而且慢时钟耗电很小)。你可以在打开快时钟时点亮LED,关闭快时钟时熄灭LED,这样一来快时钟的打开和关闭就一目了然了。

  你也可以在某个中断中将LED的状态取反(使用LED_YELLOW_FLASH()),用来此中断的产生是否正常。虽然设置断点也可以知道中断是否产生,但会中断程序的执行,造成不便。

  如果你想知道程序有没有执行到某个地方,你也可以将LED_YELLOW_FLASH()放到该。

  当然你必须互斥地观察不同的事件。就是说,对于一个LED,在一次调试中,一般只能观察一个事件,否则你自己也弄不清LED的变化到底是代表发生哪一事件。

  不中断程序的执行,又能看到程序的执行情况,应该说是一种很有效的调试程序的方法。相比开发工具所提供的单步、断点、观察变量等调试手段,这可以算是一种有效的补充。

  利用的方法,再加一个示波器,就可以测量程序执行的时间了。(你可以自己决定接不接LED)。

  使用示波器,在捕获模式下,你应该能捕获到一个脉冲,测试它的宽度,假如为30.5us。以OKI ML610Q431为例,一条nop指令包括1 cycles,1 cycles包括1 system clock。这里system clock等于振荡周期。(注意,不同的单片机对cycles, system clock的定义是不同的,需要参考各自的用户手册)。

  当然,如果示波器测量精度不够,可以多放几个nop指令,计算时再求平均。如果嫌示波器的捕获模式太麻烦,还可以采用循环结构,输出一串方波。比如:

  这种方法的使用也很灵活。你可以用来测试主循环的执行时间,调用某个函数所花的时间,以及某个中断处理的时间(不包括响应中断和退出中断的时间)等等。

  当你发现某些时候主循环的执行时间特别长时,可以采用逐步缩小范围的方法来找出到底是哪个函数花费时间长,有没有可能将其优化。

  这样,你就可以确定执行时间过长是不是因为Fun1()引起。如果不是,则继续调整测试,逐个排除,直到找到真正费时的函数,对其进行分析,看看有没有可能优化。

  当然,我们还可以用两个或更多I/O对多个事件进行逻辑分析,观察他们的先后顺序以及测试其时间间隔。这种方法也很有用,很灵活。在此不详述。

  如果你的产品带LCD显示,又没有多余的IO可供调试,或者你只是想临时的调试某个功能,那么你可以临时使用LCD上的某个图标来某个事件。当某个事情发生时,显示该图标,否则清除该图标。

  不中断程序的执行,又能观察程序的执行情况,应该说是一种很有效的调试程序的方法。相比开发工具所提供的单步、断点、观察变量等调试手段,这可以算是一种有效的补充。

  的情况下,借助于I/O,LED,示波器,数码管或LCD显示,给出各种各样的提示信息,帮助我们调试程序。

      和记娱乐,和记h88,h88平台官网