采用MAXQ1103评估套件和面向MAXQ30的CrossW

时间:2012-05-11来源:网络

图5. Step Over按钮
图5.StepOver按钮

CrossStudio通过JTAG电路板把应用程序下载到MAXQ1103中,Output窗口显示状态消息。应用程序将开始运行,然后,在代码第一行停止(左侧空白区显示黄色箭头)。运行应用程序时,单击“Play”按钮(或者选择DebugGo)。现在,请确定MAXQ1103电路板上的LED正在闪烁。您可能希望能够在一定程度上修改应用程序。使LED按顺序闪烁,或者改变点亮时间,更快或者更慢的闪烁。

使用CrossStudio调试应用程序

现在,让我们了解一下MAXQ1103和CrossStudio工具的调试功能。MAXQ1103有内置JTAG引擎,支持在实际芯片上进行调试,从而不需要昂贵的仿真器或者有可能出错的模拟器。注意,MAXQ1103还提供锁定机制,在元件锁定时,防止JTAG工作。这样,当MAXQ1103微控制器用在敏感应用中时,保证了JTAG调试引擎不会带来安全威胁。

现在,我们返回到最初的Blinky应用程序,在主函数中,把延时从500改到5:

delayms(5);

现在,构建并运行应用程序。注意,LED持续点亮,而不是不断闪烁。这就是简单演示代码第一次编写并运行时的情况。

这样会带来一个基本问题:“灯的确是连续点亮,还是闪烁非常快,而无法察觉呢”?如果灯是连续点亮,那就有必要检查原理图和引脚分配,确定一切OK。如果LED只是很快地闪烁(太快,以至于看不清间隔),那就只需要调整时间,这是可能需要做的工作。为回答这一问题,我们现在使用CrossStudio的调试工具。

按下Pause按钮(或者选择DebugBreak)。在代码停止的地方,出现一个黄色箭头。代码很有可能停止在delayms()函数的‘for’循环中(参见图6)。

图6. 在delayms()函数中,代码停止运行
图6.在delayms()函数中,代码停止运行

观察右侧的Locals窗口(如果看不到该窗口,单击DebugDebugWindowsLocals)。该窗口将显示变量“x”和“count”的当前值。现在,按下StepOver按钮几次。在Locals窗口中,您应该看到x值增加了(可以连续按下StepOver,直到循环结束,但这可能需要很长的时间)。

现在,已经很容易回答“灯是在闪烁吗”这一问题了?对此,需要在main函数的delayms(5)一行设置断点,单击该代码行左侧的小三角。它将变为红圈(图7)。现在,再次运行应用程序(DebugGo,或者Play按钮)。应用程序会运行到这一点,然后暂停。现在,点击Go若干次后,您会看到,随着您的点击,灯接通和关断。这验证了灯是在闪烁,只是太快,我们的眼睛无法察觉。

图7. 加入断点
图7.加入断点

现在,我们借这个机会了解一下更多的调试功能。按下StepOver按钮几次,按顺序执行三行代码:while(1),PO0=PO0^0x83和delayms(5)。您将看到,当通过PO0行时,灯闪烁。现在,当暂停在delayms(5)行时,按下StepInto按钮(图8),进入delayms()函数(而不是StepOver,这会执行整个函数)。

图8. Step Into按钮
图8.StepInto按钮

在运行时,还可以改变变量(和寄存器)。清除所有断点(DebugBreakpointsClearAllBreakpoints),单击Go。单击Pause,程序应再次停止在delayms()函数的中间部分。注意“x”和“count”值。现在,把x设置为2499(单击x显示的数值,高亮后输入2499)。执行几次StepOver或者StepInto,您会看到循环结束,“count”值也递减了。

以及您感兴趣的其他调试功能:DebugDisassembly将同时显示C代码和生成的汇编代码。这样,用户可以进入汇编代码,而不是C代码,同时知道对应于C代码的什么位置。

DebugDebugWindowsCallStack将显示应用程序到达当前位置时所调用的函数。如果在delayms()函数中暂停执行,其显示如图9所示。

使用DebugStop停止调试,观察右侧的Targets窗口。确定MaximSerialJTAGAdapter以粗体字显示,观察下面的配置选项。如果您使用串口,而不是默认的COM1,那么,可以在这里改变这一选项。

图9. 在delayms()函数中运行时调用堆栈

1 2 3

关键词: MAXQ CrossW 1103 30

加入微信
获取电子行业最新资讯
搜索微信公众号:EEPW

或用微信扫描左侧二维码

相关文章

查看电脑版