历史上的今天
返回首页

历史上的今天

今天是:2024年09月17日(星期二)

2019年09月17日 | Keil(MDK-ARM)系列教程(八)_在线调试(Ⅰ)

2019-09-17 来源:eefocus

Ⅰ、写在前面

Keil在线调试的内容有很多,本文带来在线调试常用的内容:Debug Toolbar调试工具栏(复位、全速运行、停止运行、单步调试、逐行调试、跳出调试、运行到光标行、跳转到暂停行、调试窗口)快捷按钮的详细内容。

Keil工具栏总共有三种:文件工具栏(File Toolbar)、编译工具栏(Build Toolbar)、调试工具栏(Debug Toolbar)。编译工具栏只在编辑模式有效,调试工具栏只在调试模式下有效。文件工具栏在两种模式下都有效。


文件工具栏可以参看文章:Keil(MDK-ARM)系列教程(二)_工具栏详细说明


本文内容已经整理成PDF文件,提供给大家下载:


http://pan.baidu.com/s/1nuJ0RDR


Ⅱ、本文要点

调试工具栏是我们在线调试时常用的工具栏(按钮),掌握这些按钮就能快速的调试代码,也即能快速的定位我们程序哪些地方存在不足。


1.编译,进入调试

编辑(或修改)代码之后,我们需要编译代码(F7)查看是否有错误,编译无误后点击调试按钮(Ctrl + F5)进入在线调试。


编译,进入调试动画效果:

2.复位,全速运行,停止运行


复位:让程序复位到起点,调试设置恢复到初始状态。这里可以参看文章Keil(MDK-ARM)系列教程(四)_工程目标选项配置(Ⅱ)Debug选项。


全速运行(F5):可以让程序运行常看运行状态,也可以在特定位置打断点,让程序运行到特定位置,查看运行状态。


停止运行:程序全速运行时(有效),点击该按钮可让程序停止运行。


复位,全速运行动画效果:

3.单步调试

单步调试(F11)也就是每点一次按钮,程序运行一步,遇到函数会跳进函数执行。


单步调试动画效果:

4.逐步调试

逐行调试(F10)也就是每点一次按钮,程序运行一行,遇到函数跳过函数执行。


逐步调试动画效果:

5.跳出调试

跳出调试(Ctrl + F11)也就是每点一次按钮,程序跳出当前函数执行,直到跳出最外面的函数(main函数)。


跳出调试动画效果:

6.运行到光标行

运行到光标处(Ctrl + F10)即将光标放在某一行,点击该按钮(或Ctrl + F11),程序执行到光标的位置就会停止下来(前提是程序能执行到光标的位置)。


运行到光标行动画效果:

7.跳转到暂停行

这个功能在程序停止运行时有效,主要的作用就是我们打开了很多文件,不知道将程序翻到哪里去了,点击改按钮即可知道我们的程序暂停在那个位置。


跳转到暂停行动画效果:

8.调试窗口


【调试窗口】是在调试的时候可以查看的窗口,这里有别于平时编辑状态下的窗口。平时编辑时View菜单下面的选项很少,但是进入调试模式,这里就多了很多选项,这些选项就是调试时查看的窗口(见下图)。

下面简述一下常用的调试窗口:


A.watch查看窗口


Watch查看窗口也就是我们常用于查看变量的窗口。

B.系统外设窗口


这个窗口用于查看外设寄存器数值的窗口。

Ⅲ、说明

每一种工具的功能都是需要自己亲自实践,并长期使用才能达到灵活运用的地步,不建议死记硬背。若要了解更多关于Keil的使用教程,可以进入我微信公众号或博客查看。


以上内容仅供参考,若有不对之处,敬请谅解。

推荐阅读

史海拾趣

EOREX公司的发展小趣事

在电子行业竞争日益激烈的背景下,EOREX公司敏锐地洞察到智能家居市场的巨大潜力。他们及时调整战略方向,将研发重心转向智能家居领域,推出了一系列具有创新性和实用性的智能家居产品。同时,EOREX还积极布局全球市场,通过与海外企业的合作与交流,不断引进先进的技术和设计理念,提升自身的竞争力。这些举措使得EOREX在智能家居领域迅速崛起,成为行业内的佼佼者。

Anders DX公司的发展小趣事

为了进一步提升公司的综合实力和市场竞争力,EOREX公司积极开展跨界合作。他们与汽车制造商、通信设备商等多个行业的领军企业建立了紧密的合作关系,共同研发和推广具有创新性和前瞻性的电子产品。这些跨界合作不仅为EOREX带来了更多的商业机会和市场份额,还推动了整个电子行业的创新和发展。

Gold Peak Group公司的发展小趣事
在控制电路周围设置必要的安全防护措施,如防护罩、警示标志等,防止人员误操作或触电事故的发生。
芯邦(Chipsbank)公司的发展小趣事

随着公司业务的不断发展,芯邦开始积极布局UWB(超宽带通信)产品线。UWB技术以其高速率、高精度和低功耗的特点,在智能家居、物联网等领域展现出巨大的应用潜力。芯邦通过研发UWB等信息传输技术及产品,致力于从移动存储及智能家电市场出发,以手机及移动智能设备、车规及汽车周边产品应用、智能家居及物联网领域为目标市场,打造多系列产品线格局,提升公司的市场竞争力。

Eureka Microelectronics Inc公司的发展小趣事

Eureka一直重视研发实力的提升和技术创新。公司拥有一支专业的研发团队,致力于新技术的研发和应用。近年来,Eureka在人工智能、物联网等领域取得了多项技术突破,推出了一系列具有竞争力的新产品。这些技术的突破和应用,不仅提升了Eureka的产品性能和质量,也推动了公司在行业内的领先地位。

CST Master Electronic Co Ltd公司的发展小趣事

在国内市场取得一定成绩后,CST Master决定进军国际市场。然而,国际市场的竞争更加激烈,法律法规和文化差异也给公司带来了不小的挑战。公司积极调整市场策略,加强与当地合作伙伴的合作,逐步打开了国际市场的大门。通过不断的努力,CST Master在国际市场上也取得了一定的份额。

问答坊 | AI 解惑

超声波测距原理图

很久以前学习时下的,拿出来给大家分享!…

查看全部问答>

外国工程师的真相

我接触过的外国工程师人数,如果以常驻国家以及永久居留权为标准,大致有30人左右。和他们聊各种事情,从孩子就读MIT(麻省理工学院)的学费,到前几年风靡一时的超级女声,其中,也了解了一些疑惑的事情,澄清了一些常见的误解。1、外国工程师准点 ...…

查看全部问答>

大家觉得这是错的吗??指针程序,谭浩强书里的

刚才无聊的翻看谭浩强的《c++程序设计》,发现在182页的用指针显示二维数组的程序有点别扭,分析了一下,觉得是错的,大家也与我一同鉴别一下吧 #include using namespace std; int main() { int a[3][4]={1,3,5,7,9,11,13,15,17,19,21,23} ...…

查看全部问答>

STM32 USB 初始化

最近在搞STM32的USB模块,要做一个功能就是程序要知道USB是否在连接状态,现在用的是 bDeviceState 这个变量 我在USB_init()中把这个变量初始化为  bDeviceState = UNCONNECTED;,这个变量在 上电初始化之后,会被USB Reset 初始化为:b ...…

查看全部问答>

这是关于LM3S328的ADC实验,请问程序有问题么

#include void PLLSet() {         unsigned long ulRCC,ulDelay;         ulRCC=SYSCTL_RCC_R;               //读取当前RCC寄 ...…

查看全部问答>

MSP430FR5720芯片下载程序有两种方式

MSP430FR5720芯片下载程序有两种方式:SBW和JTAG,怎么选择为JTAG模式,TEST和RST引脚怎么连接? 现在的电路板将两个引脚都拉高,但是IAR总是显示错误:找不到设备! 求助各路大神! …

查看全部问答>

【Ufun学习第一部分】开箱和SWD调试

最近几天刚刚回学校,就受到快递小哥连环夺命催,我要是再回来晚几天,这块小巧可爱的板子就要跟我说再见喽,迫不及待拆开快递,上电,绚烂的LED灯光效果映入眼帘,啥都不说,这手感,赞。 之前做过一个SWD转接头,正好用上。 打开样板工程,可能 ...…

查看全部问答>

利用FPGA运放将输入信号整形成一个占空比为50%的方波

最近做了一个频率计程序,计数输入信号,结果通过示波器发现信号源不是标准方波导致计数值不准确,怎么利用FPGA运放将输入信号整形成一个占空比为50%的方波,请高手指导一下,谢谢! …

查看全部问答>

电磁兼容性设计基本方法

接地 接地是电子设备的一个很重要问题。接地目的有三个: (1)接地使整个电路系统中的所有单元电路都有一个公共的参考零电位,保证电路系统能稳定地干作。 (2)防止外界电磁场的干扰。机壳接地可以使得由于静电感应而积累在机壳上的大量电荷通过大 ...…

查看全部问答>