MDK-ARM开发软件的使用(下)

前言

本章继续上节的MDK-ARM开发软件的使用,讲解程序编译和下载,以及调试。

3 程序编译和下载


     完成工程配置之后,可以进行程序的编译和下载。在 MDK主界面的工具栏上点击“Build”图标,如图中序号①所示,进行程序的编译和链接。如果程序有误,需要根据信息输出窗口中的提示信息,返回源文件进行修改,直至没有任何错误(Error)和警告(Warning)为止。完成编译后,点击工具栏中的“Download”图标,进行程序的下载,如图中序号②所示。

4 程序调试


       MDK 软件提供了强大的调试功能,几乎能够仿真片内集成的所有外设,如 GPI0、定时器和串口,并提供了单步和断点等多种调试手段。
       如前所述,在实际工程中,一般采用硬件仿真进行程序的调试。我们在工程配置中选择好仿真器的类型以及调试接口之后,进行程序的编译。如果程序没有任何错误和警告就可以点击工具栏上的“Deubg”按钮(如图中序号③所示)进人调试界面。如果用户想要退出调试界面,也是点击该按钮。


整个调试界面可以分成7个部分,如图 所示。

1,菜单栏
提供调试模式下的全部功能菜单,如图中序号①所示。

2。工具栏
提供调试模式下的常用快捷功能,包括全速、跟踪、单步和断点等调试方法以及观察窗口、外设窗口等可视化调试窗口,如图中序号②所示。

3 寄存器窗口(Register )
显示微控制器的片内寄存器、系统堆栈、处理器工作模式以及程序运行时间等信息,如图 中序号③所示。


4反汇编窗口(Disassembly )
由C语言反汇编后显示的汇编语言窗口,如图5-18 中序号④所示。


⑤ 代码调试窗口
显示代码执行顺序的调试窗口,如图中序号⑤所示。进人调试窗口后,默认执行的第一条语句是 main 函数内的第一条语句:箭头所指位置表示了下一步将要执行的语句。


⑥命令窗口(Command )
用于显示调试过程中的一些系统信息,比如仿真器的状态,如图中序号⑥所示。


⑦ 调用栈和局部变量窗口(Call Stack+Locals )
该窗口在程序暂停时会显示调用栈和当前执行函数的全部局部变量,如图中序号⑦所示。

注意:部分变量在调试时显示“Not in scope”,表明这些变量没有分配到内存,在编译程中被编译器优化了。用户如果需要查看这部分代码,需要在工程配置窗口的 C/C++示签页将默认的优化等级由 Level3 修改为 Level 0。

调试功能四大类

MDK 软件提供的调试功能主要集中在工具栏,常用的调试功能分成了四大类

第一类:常规调试方法


常规调试方法主要是全速运行、跟踪调试和单步调试等,一共有8个图标,如图

所示,具体功能如下:

复位(Reset)
其功能等同于硬件复位,让程序复位到起点,代码会重新从头开始执行。


全速运行(Run )

点击该图标之后,程序全速运行,可以观察程序运行的实际效果。如果运行中遇到用户设置的断点,将会在断点处暂停。


·停止运行(Stop)

 点击该图标之后,程序会暂停执行,进人单步调试状态:双箭头指向下一步将夔裁的代码。该图标在程序全速执行的时候才有效。


跟踪调试(Step)

点击该图标之后,程序单步执行,遇到数调用时,会跟踪进人到子函数内部执行,


单步调试(Step Over )
点击该图标之后,程序单步执行,遇到函数调用时,会把整个函数看成一条谱句来。
行,不会进入到函数内部执行。


跳出函数( Step Out )
主要用于函数内部的调试。当用户不想再执行函数内部的剩余代码时,可以点击图标跳出该函数,回到函数被调用的位置。


运行至光标处(Run to Cursor Line)
该图标可以迅速使程序运行到光标处,功能类似于全速运行至断点。两者的区别在于断点可以设置多个,而光标所在处只有一个。    

第二类:断点


断点是程序调试的重要手段之一,可以帮助用户快速执行到程序错误处,进行问题的排查。在调试界面中设置断点的方法如下:
·添加断点
在代码调试窗口中,单击语句行号旁边的灰色区域,将出现一个小红点,表明已经在该语句处添加了一个断点。程序执行到断点时就会暂停,用户可以结合调试窗口中的相关信息来排查程序中的错误。
例如,在第21行代码处单击灰色区域,出现一个小红点,表明在该行已经添加了一个断点,程序执行到 21 行时就会暂停,如图所示。          

           

取消断点
在需要取消的断点处,单击断点的小红点标记。当小红点标记消失后,表明已经取了该行的断点,程序再次执行到该行时,将不会暂停。

第三类:观察窗口(Watch Windows)


用于查看变量的当前值。在程序调试过程中,我们常常需要查看变量的当前值,来判断程序的运行是否正确。调用栈和局部变量窗口只能查看程序中局部变量的值,如果要查看其他变量的值,需要通过观察窗口。
注意:如果要在观察窗口中查看局部变量的值,必须使程序运行到局部变量所在的函数时才能观察。
将变量添加至观察窗口的步骤如下:
① 在源码调试窗口中选中需要观察的变量,例如这里定义的全局变量“SG90_Status;”;

②)单击鼠标右键,在出现的菜单中选择“Add'value'to”,并在二级子菜单中选择观察窗口“Watch 1”或者“Watch 2”。
③在调试界面的右下角将会出现观察窗口,显示变量名、变量值和变量的数据类型等基本信息。
④) 在观察窗口中,变量的显示格式默认为 16 进制。用户可以右键点击变量,修改变量的显示格式为十进制,即不勾选“Hexadecimal Display”。

第四类:外设查看窗口(System Viewer Windows)

用于查看与片内外设相关的寄存器的当前值,从而掌握外设的运行状态。片内外设可以分为两大类:
        一类是 Cortex-M内核的固有外设,如嵌套向量中断控制器 NVIC、系统节拍定时器
SysTick 等。以査看 SysTick 为例,点击工具栏的外设査看窗口图标,如图中序号①所示。在出现的菜单中依次选择:Core Peripherals ->System Tick Timer(SysTick),如图中序号②所示。将弹出一个窗口,显示与 SysTick 相关的硬件寄存器,如图中序号③所示。程序运行时,这些寄存器的内容会实时变化,用户通过査看这些寄存器的值,就可以掌握 SysTick 的运行状态。

另一类是目标芯片的片内外设,如 GPI0、定时器和串口等。以査看端口 CPIOA为例,点击外设查看窗口图标后,在出现的菜单中依次选择:CPI0->CPIOA,将弹出一个窗口,显示与端口 GPIOA相关的硬件寄存器,如图所示。程序运行时,这些寄存器的内容会实时变化,用户通过査看这些寄存器的值,就可以掌握端口GPIOA 各个引脚的状态。   

              

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值