电子文章 | 电子资料下载 | 家电维修 | 维修资料下载 | 加入收藏 | 全站地图
您现在所在位置:电子爱好者电子文章嵌入式系统采用MAXQ610评估套件(EV kit)和IAR嵌入式工作

采用MAXQ610评估套件(EV kit)和IAR嵌入式工作

11-20 17:12:23 | http://www.5idzw.com | 嵌入式系统 | 人气:276
标签:嵌入式系统开发,嵌入式开发,http://www.5idzw.com 采用MAXQ610评估套件(EV kit)和IAR嵌入式工作,http://www.5idzw.com

单击save,将文件命名为main.c (确定代码保存目录与您建立新工程的目录相同)。在工作窗口下,右键单击“blinker”,选择Add Add main.c。

下一步,将另外两个文件从软件分配源复制到您的工程目录中:isr.c和clib.r66。C文件含有中断部分,编译器需要利用它来编译程序。r66文件含有应用程序运行需要的启动代码和标准库代码。每次开始新的MAXQ610工程时,都需要重复这一复制步骤。

再次右键单击工作窗口中的“blinker”行,找到Add Add Files,选择isr.c。

现在,需要配置工程选项。选择Project Options,打开选项窗口。请按照以下步骤进行:
  • 在General选项下:Target,选择MAXQ610。
  • 在General选项下:Library Configuration,从下拉菜单中选择Custom CLIB。浏览Library File文本区,选择刚刚复制到工程目录中的clib.r66文件。
  • 在Debugger下:Setup,从driver下拉菜单中选择JTAG。
  • 在JTAG下:输入您将使用的连接JTAG电路板的串口。
现在,构建应用程序就非常简单了。按下F7或者选择Project Make。您首先会被询问保存工作空间。对此,请输入“gettingstarted”。工程应该被正确构建。

如果您希望在此处运行应用程序(例如,Project Debug,然后单击右箭头按钮),电路板上不会有任何事情发生。这是因为应用程序代码试图使用定时器中断来确定LED什么时候应该改变,而定时器的ISR中没有代码。因此,必须为定时器(ISR)编写代码。

打开文件isr.c,找到函数isr6(void),在它旁边应该有注释//timers。在函数中输入以下代码:
  TB0CN = TB0CN & 0xFF7F;       // clear timer 0 interrupt
  PO3 = PO3 ^ 0x0f;             // toggle lower nibble
这些代码首先清除定时器中断标志(必须由软件清除中断标志,否则,将导致中断矢量不断启动)。第二行触发所有4个LED,这些LED连接到端口引脚P3.0至P3.3。

现在开始构建工程,进行调试(Project Debug把您带到执行C代码的第一行,如图5所示)。代码第一行下面高亮显示,左侧空白区有一个箭头,指示程序在此暂停。现在,单击Run按钮(图6)。该按钮使程序运行至结束(或者到下一个断点)。当程序执行无限循环时,LED块在一直闪烁。

图5. 程序在代码第一行暂停
图5. 程序在代码第一行暂停

图6. 程序Run按钮
图6. 程序Run按钮

使用IAR嵌入式工作台调试应用程序

现在,我们看一下MAXQ610和嵌入式工作台工具的调试功能。MAXQ610处理器有内置JTAG引擎,支持在实际芯片中进行调试。这一特性还避免了使用昂贵的模拟器或者有可能出错的仿真器。

返回到最初的blinker应用程序,开始上面介绍的调试过程。第一行高亮显示后,点击Go按钮,继续执行。您将看到LED接通500ms,然后关断500ms。

单击Break按钮,或者选择Debug Break,暂停执行(图7)。程序应暂停在while(1)声明上,这是因为该声明占用了无限循环的大部分运行时间,而中断矢量只占用了很少的时间(每500ms只有几个周期)。

图7. Break按钮
图7. Break按钮

在检查一些处理器寄存器中的数值时,打开寄存器窗口(View Register)。此处,从下拉菜单中选择Timer 0,您将看到与定时器控制闪烁LED相关的寄存器(图8)。这里显示的Timer 0寄存器包括重装寄存器(TB0R),控制寄存器(TB0CN),计数寄存器(TB0C)和数值寄存器(TB0V)。

图8. Register窗口显示Timer 0寄存器
图8. Register窗口显示Timer 0寄存器

作为演示,我们将执行几行代码,观察这些定时器寄存器会有什么变化。按下Step Over按钮几次(图9),或者选择Debug Step Over。观察TB0V中的数值。Step Over按钮执行一行C代码,但是不会进入任何函数调用。该按钮按下时,您将看到TB0V中的数值变化范围很大,这是因为调试引擎执行时,定时器在不断运行。您还将看到,TB0CN寄存器随着定时器中断出现和结束的变化。

图9. Step Over按钮
图9. Step Over按钮

寄存器窗口不但显示了寄存器内容,而且,在调试进程中,还可以向其写入数值。程序暂停时,双击TB0R寄存器中的数值。将寄存器改为0x2DC6 (这是0x5B8C/2),然后,单击Go按钮。LED现在闪烁应比以前快两倍,这是因为定时器重新装入的计数值减小了,从而减小了定时器中断之间的时间。

在另一个演示中,我们把光闪烁模式由全通/全关(1111 0000 1111)改为交替模式(1010

上一页  [1] [2] [3]  下一页

,采用MAXQ610评估套件(EV kit)和IAR嵌入式工作
关于《采用MAXQ610评估套件(EV kit)和IAR嵌入式工作》的更多文章