打印
[其他ST产品]

如何在 STM32CubeIDE 中调试中断 ISR 和 FreeRTOS 任务?

[复制链接]
193|10
手机看帖
扫描二维码
随时随地手机跟帖
跳转到指定楼层
楼主
梧桐uuu|  楼主 | 2025-5-27 22:37 | 只看该作者 回帖奖励 |倒序浏览 |阅读模式
想要按照 youtube  https://www.youtube.com/watch?v=TH2aCiU9Jyo来尝试从 SEGGER SystemView Trace 软件调试 ISR。

该过程需要使用 JLink 兼容固件烧录 STLink 固件,然后使用 Segger SystemVIew 实时记录和查看硬件中断和FreeRtos 任务。还应该将 RTT 库包含在项目中,并将相关代码添加到源文件中。
我想知道这是否是调试 ISR 和 Tasks 的正确方法?
我在 STM32CubeIDE 中不知道如何操作。

谁知道在利用 Segger SystemView 的 STM32CubeIDE 中调试 ISR 和FreeRtos 方法?

使用特权

评论回复
沙发
公羊子丹| | 2025-5-28 07:27 | 只看该作者
我也刚折腾过这套流程,STLink 换 J-Link 固件是第一步,烧完后 SystemView 才能连接 RTT 通道,不然没法看 trace。

使用特权

评论回复
板凳
周半梅| | 2025-5-28 07:28 | 只看该作者
RTT 库记得加上 SEGGER_RTT.c 和 SEGGER_RTT_Conf.c,SystemView 要靠它和 CPU 实时通信的。

使用特权

评论回复
地板
帛灿灿| | 2025-5-28 07:29 | 只看该作者
CubeIDE 不太适合直接调 SystemView 的 trace,要配合 SystemView 的配置文件和初始化函数,你 main.c 里加上 SEGGER_SYSVIEW_Conf() 初始化了吗?

使用特权

评论回复
5
童雨竹| | 2025-5-28 07:30 | 只看该作者
SystemView 跟传统调试方式不一样,它是观测系统行为的,不是断点调试那种,适合看中断频率和任务调度情况。

使用特权

评论回复
6
万图| | 2025-5-28 07:31 | 只看该作者
注意 FreeRTOSConfig.h 里要打开 configUSE_TRACE_FACILITY 和 configUSE_STATS_FORMATTING_FUNCTIONS,不然任务追踪信息不会上报。

使用特权

评论回复
7
Wordsworth| | 2025-5-28 07:31 | 只看该作者
如果你用 CubeMX 生成的工程,记得在 freertos.c 的 MX_FREERTOS_Init() 最后加上 SEGGER_SYSVIEW_Start() 才能开始 trace。

使用特权

评论回复
8
Bblythe| | 2025-5-28 07:32 | 只看该作者
SystemView 真的是神器,尤其用在中断频繁的项目上,可以看到哪个任务卡住,哪个中断频率太高。

使用特权

评论回复
9
Pulitzer| | 2025-5-28 07:33 | 只看该作者
你参考的那个 YouTube 视频讲得挺细的,不过它是裸机项目,如果你是用 CubeIDE + FreeRTOS,配置 RTT 和 trace 要稍微改下。

使用特权

评论回复
10
Uriah| | 2025-5-28 07:34 | 只看该作者
还可以试试 FreeRTOS+Trace 和 Percepio Tracealyzer,虽然不是免费的,但集成度和可视化更强。

使用特权

评论回复
11
Clyde011| | 2025-5-28 07:35 | 只看该作者
如果你只是偶尔调 ISR,也可以用 CubeIDE 的 ITM 打印或者断点看中断嵌套情况,SystemView 更适合持续监控和优化。

使用特权

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

本版积分规则

18

主题

20

帖子

0

粉丝