微波EDA网,见证研发工程师的成长!
首页 > 硬件设计 > 模拟电路设计 > 采用MAXQ1103评估套件和面向MAXQ30的CrossW

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

时间:05-11 来源:互联网 点击:

口显示状态消息。应用程序将开始运行,然后,在代码第一行停止(左侧空白区显示黄色箭头)。运行应用程序时,单击“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()函数中,代码停止运行

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

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


图7.加入断点

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


图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()函数中运行时调用堆栈

更多资讯请关注:21ic模拟频道

Copyright © 2017-2020 微波EDA网 版权所有

网站地图

Top