如何在keil中定义非debug模式下的物理“断点”

本文介绍了一种在nRF52832芯片上调试蓝牙广播的有效方法。当设备处于debug模式时可以检测到广播,而在实际部署时却检测不到。作者提出了一种使用外部LED或蜂鸣器作为物理“断点”的解决方案,通过无限循环点亮LED或触发蜂鸣器来判断代码执行位置。

今天在移植程序时,用的是nordic 52832的芯片,发现在debug模式下,能检测到广播,直接下在板子里检测不到广播,后来找到了一种替代debug模式的物理“断点”方法。

若你的板子上有灯或者蜂鸣器,在你想打断点的地方加上一个for循环,如下:

for(;;)

{

nrf_gpio_cfg_output (*);

nrf_gpio_pin_write(* ,0x01);

}

PS:* 为你加的外设的管脚号


这样,若你的灯或者蜂鸣器工作了,说明你打断点的地方是没有问题的。


### Keil 5 断点调试使用教程 在嵌入式开发中,Keil uVision 是一款广泛使用的集成开发环境 (IDE),其强大的调试功能可以帮助开发者快速定位和解决问题。以下是关于 **Keil 5 中断点调试** 的详细介绍: #### 设置简单断点Keil uVision 5 中设置简单的断点常直观。只需双击源代码编辑器左侧的空白区域即可创建一个红色圆圈标记的断点。当程序运行到该位置会自动暂停执行[^1]。 #### 条件断点配置 为了更精确地控制程序行为,在某些情况下可能需要设定条件断点。右键击已有的断点图标,选择 “Edit Breakpoint Condition...”,随后输入所需的表达式或变量值作为触发条件。例如,如果希望仅当某个计数器达到特定数值才停止,则可以在对话框内填写类似于 `counter >= 10` 这样的逻辑语句[^2]。 ```c int counter = 0; while(1){ counter++; } // 当 counter 达到指定数量中断 ``` #### 日志记录型断点 除了常规意义上的停止单步外,还可以利用日志打印类型的断点来观察数据流而无需打断整个进程。同样通过上述方法访问属性界面后勾选“Log Message”选项,并定义消息模板字符串用于显示即状态信息[^3]。 #### 动态调整断点次数限制 有我们只关心函数调用序列中的某几次迭代情况而全部过程。此可以通过设置命中次数上限实现这一目标——即告诉调试器仅仅允许前 N 次遇到此断点生效之后忽略其余实例直到重新启用它为止。 --- ### 高级特性支持 对于更加复杂的场景,比如多线程应用程序或者实操作系统环境下工作负载分配不均等问题诊断来说,单纯依靠软件层面手段往往难以满足需求。因此推荐充分利用 Cortex-M 系列微控制器自带的追踪单元(ETM)、数据监视与跟踪组件(DWT)等功能模块来进行侵入式的高效分析。 ```python import pyocd session = pyocd.session.Session() target = session.connect_to_target('stm32f4xx') trace_data = target.read_dwt_traces() print(trace_data) ``` 以上脚本展示了如何借助 PyOCD 库读取基于 DWT 单元捕获的信息片段以便进一步处理展示给用户查看。 ---
评论
成就一亿技术人!
拼手气红包6.0元
还能输入1000个字符
 
红包 添加红包
表情包 插入表情
 条评论被折叠 查看
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值