|
新建Keil uVision调试工程
|
PC机系统配置要求:WIN7-64BIT、WIN10、WIN11 |
在这里通过构建一个完整的可用于调试的工程,来演示设置调试工程有哪些要点。 |
|
4、实验板的单片机中已安装调试代理程序。如未安装,需先行安装,方法参见 安装调试代理程序。 |
1. |
点击 这里 下载 Hello World 范例工程。 |
2. |
解压后,删除 Hello World 文件夹内除了 APP 文件夹以外的所有文件和文件夹。 |
3. |
双击桌面上的图标,打开 Keil uVision5 软件。点开 [Project] 菜单,找到并点击 [New uVision Preject...] 命令。 |
4. |
在路径栏目里选择 Hello World 文件夹,在文件名栏目里输入工程的名字,然后点击 [保存] 按钮。 |
5. |
在器件选择窗口里,先找到 [Intel] 并点开,再找到 [8032AH] 并选中,最后点击 [OK] 按钮。之所以选择这个器件,是因为我们希望使用最素颜的51单片机做为我们的研究对象。其他家的产品或多或少都做了一些特化,只有 Intel 的才是最标准的。 |
7. |
在 [Project] 窗口里,右键点 [Target1] 条目。在弹出的右键菜单上,找到并点击 [Manage Project Item...] 命令。 |
8. |
在弹出的对话框内,点击 [Project Targets] 窗口上方的 [X] 按钮,删原有内容。 |
9. |
再点击 [Project Targets] 窗口上方的 [□] 按钮,新建一个工程条目,以 APP 命名。 |
10. |
点击 [Groups] 窗口上方的 [X] 按钮,删除原有内容。 |
11. |
点击 [Groups] 窗口上方的 [□] 按钮,新建条目并命名为 SRC。再次点击 [Groups] 窗口上方的 [□] 按钮,新建第2个条目,取名 INC。按照通常的习惯,APP 代表应用程序,SRC 代表源文件,INC 代表头文件。把文件如此分类,其他人更容易看得懂。 |
12. |
在 [Groups] 窗口里选中 [SRC] 条目,然后点击 [Add Files...] 按钮,向该条目下添加文件。 |
13. |
先将 [文件类型] 设定为 C Source file(*.c),再浏览找到 APP 文件夹下的 SRC 文件夹,选中该文件夹下的所有文件。点击 [Add] 按钮,加到 [SRC] 条目下,再点击 [Close] 按钮,关闭对话框。 |
14. |
在 [Groups] 窗口里选中 [INC] 条目,然后点击 [Add File...] 按钮,向该条目下添加文件。 |
15. |
先将 [文件类型] 设定为 Text file(*.txt; *.h; *.inc),再浏览找到 APP 文件夹下的 INC 文件夹,选中该文件夹下的所有文件。点击 [Add] 按钮,加到 [INC] 条目下,再点击 [Close] 按钮,关闭对话框。 |
16. |
在 [Groups] 窗口里选虽 [SRC] 条目,然后点击 [Add Files...] 按钮,再次向该条目下添加文件。 |
17. |
先将 [文件类型] 设定为 Asm Source file(*.s*; *.src; *.a*),再先中 Hellp World 文件夹下的 STARTUP.A51 文件。点击 [Add] 按钮,加到 [SRC] 条目下,再点击 [Close] 按钮,关闭对话框。 |
18. |
点击 [OK] 按钮,关闭 [Manage Project Items...] 对话框。 |
19. |
右键点 [Project] 窗口的 [APP] 条目。在弹出的菜单上点击 [Optios for Target 'APP'...] 命令。 |
20. |
选中 [Target] 页。在 [Xtal(MHz)] 的文本框内输入 22.1184,因为学习板的时钟频率是 22.1184MHz。在 [Eprom #1] 的 [Start] 文本框里输入 0x2000,[Size] 文本框里输入 0x2000。在 [Ram #1] 的 [Start] 文本框里输入 0x0000,[Size] 文本框里输入 0x2000。在这里被调试的程序并没有存放在 0x0000 地址开始的程序空间,而是放在了从 0x2000 地址开始的程序空间,因为 0x0000 地址开始的 8K 程序空间被调试代理程序占用了。这样调试好的程序,只需更改地址段重新编译就可以运行在正常的程序空间上。 |
21. |
选中 [C51] 页。勾选 [Interrupt Vectors at address] 设置设项,并在其文本框内输入 0x2000。因为要运行在从 0x2000 开始的程序空间上,所以中断向量表也要放在这一空间。在 [Include Paths] 文本框内输入 APP\INC\。将 [Code Optimization] 的 [Level] 设置为 7。 |
22. |
选中 [Debug] 页。点击右侧的 [USE] 单选按钮,并在其后的复选框内选择 [Keil Monitor-51 Driver]。勾选 [Load Application at Startup] 选项和 [Run to main()] 选项。最后点击右侧的 [Setting] 按钮。 |
23. |
在弹出的对话框内,勾选 [Serial Interrupt] 选项,然后将 [Buadrate] 设置为 57600,再将 [Port] 设置成学习板的通信口号,最后点击 [OK] 按钮。学习板的通信口号可以在 Windows 的设备管理器中查看,参见:安装 CH341C 驱动程序。 |
25. |
在 [Project] 窗口里,点开 [SRC] 条目,双击 STARTUP.A51 的文件名,右侧的代码窗会显示 STARTUP.A51 文件的内容。拖动滚动条找到 ?C_STARTUP 标号,在这一标号的上一行有一条语句:CSEG AT 0,将其改为 CSEG AT 0x2000。这一更改,也是和程序要运行在从 0x2000 地址开始的程序空间有关。点击 [Save] 按钮,保存刚才的修改。 |
26. |
在 [Project] 窗口里,右键点击 [APP] 条目。在弹出的菜单上点击 [Rebuild all target files] 命令,重新编译工程。 |
27. |
将学习板用USB电缆连接到电脑的USB口上。点开 [Debug] 菜单,然后点击 [Start/Stop Debug Session] 命令,启动调试工具。 |
28. |
经过短暂的程序下载过程之后,应用程序启动并停在了 main() 函数的第1行语句处。接下来,我们就可以进一步的做一些调试操作了,参见:运行Hello World程序。 |
|
以上各步展示了如何建立一个用于调试的应用程序工程。和正常的应用程序工程相比,有3处不同: |
|
1. 程序运行空间的起始地址为 0x2000 ,而不是 0x0000; |
|
2. 程序的中断向量表放在 0x2000 地址,而不是 0x0000 地址; |
|
3. 在 STARTUP.A51 中,程序的第1条指令存放在 0x2000 地址,而不是 0x0000 地址; |
|
应用程序调试好之后,将以上3处地址的设置恢复成 0x0000,再重新编译,应用程序就可以运行在正常的地址空间上了。 |
|
|
|