三、断点设置
程序调试时,一些程序行必须满足一定的条件才能被执行到(如程序中某变量达到一定
的值、按键被按下、串口接收到数据、有中断产生等),这些条件往往是异步发生或难以预
先设定的,这类问题使用单步执行的方法是很难调试的,这时就要使用到程序调试中的另一
种非常重要的方法——断点设置工字电感。断点设置的方法有多种,常用的是在某一程序行设扁平型电感置断点,
设置好断点后可以全速运行程序,一旦执行到该程序行即停止,可在此观察有关变量值,以
确定问题所在。在程序行设置/移除断点的方法是将光标定位于需要设置断点的程序行,使
用菜单Debug->Inser插件电感t/Remove BreakPoint 设置或移除断点(也可以用鼠标在该行双击实现同
样的功能);Debug->Enable/Disable Breakpoint 是开启或暂停光标所在行的断点功能;
Debug->Disable All Breakpoint 暂停所有断点;Debug->Kill All BreakPoint 清除所有的断点设
置。这些功能也可以用工具条上的快捷按钮进行设置。
除了在某程序行设置断点这一基本方法以外,Keil 软件还提供了多种设置断点的方法,
按Debug->Breakpoints… 即出现一个对话框,该对话框用于对断点进行详细的设置,如图4
所示。
图4 中Expression 后的编缉框内用于输入表达式,该表达式用于确定程序停止运行的条
件,这里表达式的定义功能非常强大,涉及到Keil 内置的一套调试语法,这里不作详细说
明,仅举若干实例,希望读者可以举一反三。
1) 在Experssion 中键入a==0xf7,再点击Define 即定义了一个断点, 注意,a 后有两
个等号,意即相等。该表达式的含义是:如果a 的值到达0xf7 则停止程序运行。除
图3 在线汇编窗口 [稳压电源]2596问题用LM2596-ADJ搭了个输出9V的电路,工作一切正常。 浅谈使用可定制微控制器高效开发系统级芯片 (So 为了应对成本、尺寸、功耗和开发时间的压力,许多电子产品都建构于系统级芯片 (SoC)之上。这个单片集成电路集成了大多数的系统功能。然而,随着这些器件越来越复杂,要在有限的时间里经济地进行产品开发以满 [填问卷赢好礼]轻盈点击间,掌阅无尽风采!东芝PCI【小管前言】大热天的,不想挪窝?那就在家get精彩!东芝PCIM在线展会让你这个夏天不那么燥热!What?PCIM?PCIM——(2016上海)国际电力元件、可再生能源管理展览会
使用相等符号之外,还可以使用>,>=,<,<=,!=(不等于),&(两值按位与),&&(两值相与)等运算符号。
2) 在Expe一体电感rssion 后中键入Delay 再点击Define,其含义是如果执行标号为Delay 的行则中断。
3) 在Experssion 后中键入Delay,按Count后的微调按钮,将值调到3,其意义是当第三次执行到Delay 时才停止程序运行。
4) 在Experssion 后键入Delay , 在
Command 后键入printf(“SubRoutine
‘Delay’ has been Calledn”)主程序每次
调用Delay 程序时并不停止运行,但会
在输出窗口Command 页输出一行字
符,即SubRoutine ‘Delay’ has been
Called。其中“n”的用途是回车换行,
使窗口输出的字符整齐。
5) 设置断点前先在输出窗口的Command
页中键入DEFINE int I,然后在断点设
置时同4),但是Command 后键入printf(“SubRoutine ‘Delay’ has been Called %d
timesn”,++I),则主程序每次调用Delay 时将会在Command 窗口输出该字符及被调
突然有一天,自己调试的时候不小心在9V那里短路了下,就一下,然后9V输出的电源指示灯(9V输出加了个LED指示)一直闪烁了,输出只有3点
【活动详情】http:/