打印
[应用相关]

Keil调试时设置断点的高级用法

[复制链接]
430|10
手机看帖
扫描二维码
随时随地手机跟帖
跳转到指定楼层
楼主
cr315|  楼主 | 2022-11-22 09:27 | 只看该作者 |只看大图 回帖奖励 |倒序浏览 |阅读模式

在线调试程序时,打断点是非常有效的一种方式,配合单步调试,可以快速定位问题。但有的时候,手动打断点用起来不是那么方便。

比如,想要在一个循环的第N次停下来,如果手动打断点,那就要不停的点击单步运行,直到循环运行到第N次。再比如,程序运行过程中变量不知何时被改变了,又不好定位,手动打断点就不知打在哪里。这时就要用到一些断点的高级用法。
1、设置断点的运行次数以下面程序为例,在循环的第十次将程序停止。首先在循环中手动打一个断点:

点击Debug菜单,选择BreakPoints:

弹出下面菜单:

最上面的断点是手动打的,双击该断点,会看到Expression会显示该断点的信息,修改Count的值为10,点击Define,然后关闭该窗口。这里说明一下:Expression为表达式,即断点的条件,可以看到,手动设置的断点结尾为\123,表示在main.c文件的123行。这里支持基本的>、<、==、!=等操作符。Count为次数,表示运行多少次中断一次,手动设置的断点Count都是1。
Command为命令,表示到达该断点时执行的命令,默认为空。
按照上面的设置,运行程序。可以看到,程序运行到断点时没有马上停下,而是在第10次才停下来:

2、变量匹配断点将变量添加到Watch窗口,右击选择Set Access BreakPoint at xxx。还是弹出刚才的菜单:

勾选Access方式Read或Write,设置Count值,点击Define。这里选择Write,Count值为4,表示该变量第四次被写入时程序会停止。

3、变量条件匹配断点跟上一步一样,在Watch窗口,右击变量选择Set Access BreakPoint at xxx。勾选Access方式Read或Write,删除Expression下原来的内容,填写表达式“AD== 10”。点击Define。这样当AD==10时程序会停止。

4、打印信息

选择一个手动打好的断点,然后在Command下填写printf(),则在运行到断点处时,程序不会停止,而是在Command窗口打印设置的信息。

5、条件匹配打印信息还可以将3和4组合使用,如下所示:

则AD==10时,程序不中断,在Command窗口打印信息。断点的高级用法还有很多种,不同的表达式,不同的指令等,具体可查阅Keil的使用帮助文档。


使用特权

评论回复
沙发
Wordsworth| | 2024-10-21 07:21 | 只看该作者

改变测试负载的值,再次测试输出的电流和电压

使用特权

评论回复
板凳
Clyde011| | 2024-10-21 08:24 | 只看该作者

表征负载能力的指标是负载能力和负载能力上升时间

使用特权

评论回复
地板
公羊子丹| | 2024-10-21 09:17 | 只看该作者

环氧树脂由于硬度的原因不能用于应力敏感和含有贴片元件的模块灌封,在模块电源中基本被淘汰

使用特权

评论回复
5
万图| | 2024-10-21 10:20 | 只看该作者

直至电感器饱和,使开关器件烧毁。好的元器件就到唯样商城。图中的D3与N3构成的磁通复位电路,提供了泄放多余磁能的渠道

使用特权

评论回复
6
Uriah| | 2024-10-21 11:23 | 只看该作者

一些静态测试参数还包括波浪、纹波、起伏和静态输出电压精度。

使用特权

评论回复
7
帛灿灿| | 2024-10-21 13:19 | 只看该作者

测试参数包括电源的输出电压、输出电流、负载能力、压降、效率和输出波形

使用特权

评论回复
8
Bblythe| | 2024-10-21 14:22 | 只看该作者

逐渐变细的孔(也称为邮票孔)变得越来越普遍

使用特权

评论回复
9
周半梅| | 2024-10-21 16:18 | 只看该作者

正激:脉冲变压器的原/副边相位关系

使用特权

评论回复
10
Pulitzer| | 2024-10-21 17:21 | 只看该作者

是两根线分别对地的噪声

使用特权

评论回复
11
童雨竹| | 2024-10-21 19:17 | 只看该作者

大于1的定义为极高导热的性能,而对于模块电源此水平的导热系数是无法达到其散热功能的需求

使用特权

评论回复
发新帖 我要提问
您需要登录后才可以回帖 登录 | 注册

本版积分规则

1324

主题

3809

帖子

0

粉丝