ExProbe 官方 MCU 示例工程:在目标板上集成 ExProbe-RTT 与 ExProbe-CAN,用于变量探针、高速录波与调试验证。
ExProbe · STM32 · RTT · CAN · J-Link · 变量探针 · 数据记录 · 波形录波 · 嵌入式调试 · IAR · Keil MDK
示例工程将 ExProbe-RTT 与 ExProbe-CAN 集成在同一 MCU 工程中,可通过预处理器宏单独使能或禁用:
| 宏 | 作用 |
|---|---|
USE_EXPROBE_RTT |
设为 0 关闭 ExProbe-RTT |
USE_EXPROBE_CAN |
设为 0 关闭 ExProbe-CAN |
| 项 | 版本 / 型号 |
|---|---|
| J-Link | J-Link Pro V4 |
| IAR Embedded Workbench | 8402 |
| Keil MDK | 5.42(AC6 编译器) |
| CAN 分析仪 / 接口 | 与目标板 Classic CAN 1 Mbps 匹配 |
| 引脚 | 功能 | 说明 |
|---|---|---|
| PE14 | TIM1_CH4 | 采样时基,20 kHz |
| PB7 | GPIO 输出 | 输出脉冲,用于测量单次采样耗时 |
| PD1 | FDCAN1_TX | ExProbe-CAN 通信 |
| PD0 | FDCAN1_RX | ExProbe-CAN 通信 |
| 引脚 | 功能 | 说明 |
|---|---|---|
| PA11 | TIM1_CH4 | 采样时基,20 kHz |
| PC13 | GPIO 输出 | 输出脉冲,用于测量单次采样耗时 |
| PB9 | CAN1_TX | ExProbe-CAN 通信 |
| PB8 | CAN1_RX | ExProbe-CAN 通信 |
每个 MCU 提供 IAR 与 MDK(AC6) 两套工程;仓库内附带 ExProbe-RTT / ExProbe-CAN 的 .PrjExProbe 项目文件,可直接打开对应波形页面试录。使用 CAN 示例时,打开 Test_*_CAN*.PrjExProbe,并将 CAN 接口与目标板 TX/RX 对接。
| MCU | IAR 工程目录 | MDK 工程目录 | ExProbe-RTT 项目 | ExProbe-CAN 项目 |
|---|---|---|---|---|
| STM32G474VCT6 | STM32G474VCT6/EWARM/ |
STM32G474VCT6/MDK-ARM/ |
Test_G474VC_IAR_RTT.PrjExProbe / Test_G474VC_MDK_RTT.PrjExProbe |
Test_G474VC_IAR_CAN.PrjExProbe / Test_G474VC_MDK_CAN.PrjExProbe |
| STM32F103CBT6 | STM32F103CBT6/EWARM/ |
STM32F103CBT6/MDK-ARM/ |
Test_F103CB_RTT_IAR.PrjExProbe / Test_F103CB_RTT_MDK.PrjExProbe |
Test_F103CB_CAN_IAR.PrjExProbe / Test_F103CB_CAN_MDK.PrjExProbe |
仓库中另含
STM32H533RET6等后续示例板支持,用法与上述工程类似。
RTT / CAN 两路示例采集相同的物理变量,共 24 路(含系统时间):
| 类型 | 数量 | 说明 |
|---|---|---|
float |
18 | 6 路正弦、6 路三角、6 路梯形波,组内相移 60° |
int64_t |
2 | 正弦,两路反相 |
double |
2 | 正弦,两路反相 |
uint8_t 枚举 |
1 | exprobe_sim.state(STATE_A~STATE_J,每 100 个采样点切换) |
| 系统时间 | 1 | RTT:exprobe_rtt_sys_time_us(必需);CAN:用于断流检测(波形页自动加入) |
波形由 app_exprobe_sim.c 查表生成;PB7/PC13 在每次采样中断末尾翻转,可用示波器测量采样耗时。
- 在 ExProbe 官网 注册并下载 PC 端软件
- 用 IAR 或 MDK 打开对应 MCU 工程,编译并下载
- 连接调试器(RTT)或 CAN 接口(CAN),打开仓库中匹配的
.PrjExProbe项目 - 绑定变量、配置触发后开始录波
下表为 ExProbe-RTT 示例在上述测试环境下的实测参考值。分频比由 MCU 性能与编译器效率决定;「最大传输速率」为 J-Link 上传实测值,「采样时间」为单次采样中断耗时。实际数值与 J-Link 型号、USB 占用、优化等级有关,仅供参考。
| 序号 | 型号 | 频率 (MHz) | IAR 最大传输速率 (KB/s) | IAR 采样时间 (μs) | MDK 最大传输速率 (KB/s) | MDK 采样时间 (μs) |
|---|---|---|---|---|---|---|
| 1 | STM32G474VCT6 | 160 | 1340 | 5.04 | 1340 | 5.32 |
| 2 | STM32F103CBT6 | 72 | 910 | 12.2 | 820 | 13.68 |
触发方式: 使用系统时间变量 exprobe_rtt_sys_time_us 配置触发启动与触发停止(下降沿)。分频比无固定值,由 MCU 性能与编译器代码效率决定,需根据界面「数据连续/断续」指示调整。
推荐步骤:
- 编译并下载对应 RTT 工程,连接 J-Link,打开
Test_*_RTT*.PrjExProbe。 - 波形页绑定变量组并 激活本页面。
- 配置触发启动:通道
[0] exprobe_rtt_sys_time_us,下降沿,阈值20000000(μs),触发前保留10000点。
- 配置触发停止:同样使用
exprobe_rtt_sys_time_us,阈值与启动不同(示例中为更大的时间值)。 - 开始记录,待触发启动后波形滚动;触发停止后自动停录。
波形与变量显示:
- int64_t、double 大动态范围变量可正常显示:
- 枚举变量
exprobe_sim.state在波形页显示为STATE_A~STATE_J名称,而非原始整数值:
下表为 ExProbe-CAN 示例在上述测试环境下的实测参考值。分频比固定为 1;单次录波最大点数由 app_exprobe_can_runtime.c 中流缓冲区大小与变量个数共同决定(G474 示例约 40 KB 缓冲,F103 约 6 KB)。表中「采样时间」为单次采样中断耗时。实际数值与 CAN 接口型号、优化等级有关,仅供参考。
| 序号 | 型号 | 频率 (MHz) | IAR 采样时间 (μs) | MDK 采样时间 (μs) |
|---|---|---|---|---|
| 1 | STM32G474VCT6 | 160 | 5.2 | 5.32 |
| 2 | STM32F103CBT6 | 72 | 15.3 | 17 |
触发方式: 使用枚举变量 exprobe_sim.state 配置触发启动(上升沿,示例阈值为 STATE_E (4))。分频比固定为 1;可录最大点数取决于 MCU 侧流缓冲区配置,而非 PC 端分频设置。
推荐步骤:
- 编译并下载对应 CAN 工程,连接 CAN 接口,打开
Test_*_CAN*.PrjExProbe。 - 波形页绑定变量组并 激活本页面(界面提示 READY 后可开始记录)。
- 配置触发启动:通道
[23] exprobe_sim.state,上升沿,数值STATE_E (4),按需设置触发前保留比例。
- 开始记录;当
exprobe_sim.state由STATE_D切换到STATE_E时触发启动,随后停录或等待缓冲区写满。
变量显示:
示例代码中 ExProbe 相关库与接口遵循各模块头文件中的 SPDX / MIT 说明;ST 固件库等第三方内容遵循其原有许可。












