0
  • 聊天消息
  • 系统消息
  • 评论与回复
登录后你可以
  • 下载海量资料
  • 学习在线课程
  • 观看技术视频
  • 写文章/发帖/加入社区
会员中心
创作中心

完善资料让更多小伙伴认识你,还能领取20积分哦,立即完善>

3天内不再提示

STM32CubeIDE所支持的几个调试小工具及功能

茶话MCU 来源:茶话MCU 作者:茶话MCU 2022-07-11 09:58 次阅读
加入交流群
微信小助手二维码

扫码添加小助手

加入工程师交流群

意法半导体ST公司为广大STM32用户免费提供了基于GCC的功能强大集成调试工具STM32CubeIDE。这里简单演示下STM32CubeIDE所支持的几个调试小工具及功能。

d9bfe166-00bb-11ed-ba43-dac502259ad0.png

1、利用Live Expression 实时显示变量数据;2、利用SWVSWO功能实现printf打印输出;3、利用SWV实现数据实时跟踪动态图形显示;4、利用CubeIDE集成的串口终端软件实现printf输出; 要实现liveexpression,首先要在debugger配置中使能该功能,如下图中1处所示。若要使用SWV功能,也需在debugger配置中使能相关选项,如下图中2处所示。

d9cf8044-00bb-11ed-ba43-dac502259ad0.png

要实现SWO输出,基于CubeMx进行配置时,要做如下操作:

d9ebd2bc-00bb-11ed-ba43-dac502259ad0.png

然后在代码里需添加些许代码,在main文件前面加上:#include"stdio.h"int __io_putchar(int ch){ITM_SendChar(ch);return(ch);} 另外,在用户代码区添加下面代码【针对CubeIDE而言,不同IDE写法略有不同】:/* USER CODE BEGIN 4 */int _write(int file, char *ptr, int len){int DataIdx;for (DataIdx = 0; DataIdx < len; DataIdx++){ __io_putchar( *ptr++);}return len;}/* USER CODE END 4 */【注:上面这个函数代码有些版本应该不需要添加了,在那个syscalls.c文件里已经有了该函数。不过它是弱定义,你再写一次也无妨。】 我这里定义了几个全局变量,通过Live ExpressionSWO 打印输出结果。 uint8_t countcir=0; float Var1=0.0; float Var2=0.0; 要通过SWO输出结果,在CubeIDE里面还需打开相关功能项,如下图所示:

d9fb45b2-00bb-11ed-ba43-dac502259ad0.png

编译完成后,点击小虫子图标进入调试状态并运行:

da10d3dc-00bb-11ed-ba43-dac502259ad0.png

我们可以看到,下图右上角是live expression结果,图形下部分是基于SWO的printf输出。

da225ec2-00bb-11ed-ba43-dac502259ad0.png

如果我们要利用SWV实现变量数据的实时图像显示,还需要做些配置。
打开IDE环境下window/SWV的相关功能项,即将下图中第1部分中SWV下面的SWV Data Trace Timeline Graph选上。然后进入调试状态,点击下图中第2部分的蜻蜓状的图标进入设置阶段,即下图中的第3部分。 这里我对变量countcirVar2进行实时监测,做适当的勾选和填写,并启用ITM port0。【注意图中星号所标记的地方】

da4797b4-00bb-11ed-ba43-dac502259ad0.png

配置完成确认后,再进入调试状态并运行,可以看到下面结果:

da600e98-00bb-11ed-ba43-dac502259ad0.png

上图中下半部分的红色正弦波是Var2的实时显示图形,橙色直线是countcir的实时变化图形。 顺便提醒下,我在上面的输出中使用到了浮点数,要想printf正常运行,有个地方我们还需要在工程属性那里做些配置,如下图示,勾选即可。

da77ab16-00bb-11ed-ba43-dac502259ad0.png

下面简单介绍下使用STM32CubeIDE集成的串口终端软件基于UART做打印输出。平常我们基于UARTprintf时往往还得在PC端装个串口终端软件,如果使用CubeIDE就可以省去这一步了,无须额外安装类似工具软件了,它已经给我们集成了相关部件在里面。 当我们完成编译,进入调试状态后,可以参照下图所示步骤进行配置

da8eed80-00bb-11ed-ba43-dac502259ad0.png

当然,相应的重定向代码还是要自行添加的,这点跟使用其它IDE是一样的。 CubeIDE为例,在main()前面添加下面代码:/* USER CODE BEGIN PM */#ifdef __GNUC__/* With GCC, small printf(option LD Linker->Libraries->Small printfset to 'Yes') calls __io_putchar() */#define PUTCHAR_PROTOTYPE int __io_putchar(int ch)#else#define PUTCHAR_PROTOTYPE intfputc(int ch, FILE *f)#endif/* __GNUC__ *//* USER CODE END PM */ 然后在用户代码区添加下面代码:/* USER CODE BEGIN 4 *//* @brief Retargets the C library printffunction to the USART.*/ PUTCHAR_PROTOTYPE{/* Place yourimplementation of fputc here */HAL_UART_Transmit(&huart1, (uint8_t *)&ch, 1, 0xFFFF);return ch;}/* USER CODE END 4 */ 关于CubeIDE环境下的几个调试小工具就介绍到这里。大家根据自己的喜好等灵活选用。当然,STM32CubeIDE功能很丰富、很强大,更多功能有待你去探究挖掘。 最后,分享一个关于STM32CubeIDE培训视频资料的站点,在www.stmcu.com.cn的设计资源区,如下图所示:

daa2f230-00bb-11ed-ba43-dac502259ad0.png

有兴趣的可以去看看,观看时建议选择超清效果来看,否则有些内容可能看不清。如果有人不知道哪里可以下载免费的STM32CubeIDE,点击左下方的“原文阅读”获取链接信息,它支持多个OS,你选择所需要的版本,比方windows版的。

dab5b726-00bb-11ed-ba43-dac502259ad0.png

审核编辑 :李倩


声明:本文内容及配图由入驻作者撰写或者入驻合作网站授权转载。文章观点仅代表作者本人,不代表电子发烧友网立场。文章及其配图仅供工程师学习之用,如有内容侵权或者其他违规问题,请联系本站处理。 举报投诉
  • STM32
    +关注

    关注

    2305

    文章

    11120

    浏览量

    371134
  • 调试
    +关注

    关注

    7

    文章

    623

    浏览量

    35379
  • 变量
    +关注

    关注

    0

    文章

    615

    浏览量

    29369
收藏 人收藏
加入交流群
微信小助手二维码

扫码添加小助手

加入工程师交流群

    评论

    相关推荐
    热点推荐

    STM32CubeIDE使用教程

    内容详细,适合转向STM32CubeIDE,它免费,没有代码容量限制
    发表于 09-02 16:16 5次下载

    意法半导体:STM32CubeMX将不再集成到STM32CubeIDE

    实际集成后会出现 性能低下 、跨操作系统 稳定性差 和 更新包庞大 等问题。因此我们应该让STM32CubeIDE回归本源,继续专注于 编辑/编译/调试 等核心功能。 STM
    的头像 发表于 09-01 17:18 2630次阅读

    使用STM32CubeIDE调试STM32MP157D的M4内核时报了下图这个错误,怎么解决?

    我使用STM32CubeIDE调试STM32MP157D的M4内核时报了下图这个错误: 经过我的排除后发现,应该是STM32CubeIDE上传&quot
    发表于 06-18 06:57

    请问stm32cubeide中如何查看版本日志?

    stm32cubeide中如何查看版本日志?看能支持哪些芯片型号?
    发表于 06-09 07:44

    stm32cubeIDE使用malloc失败是什么原因?

    我在stm32cubeIDE环境下,已经分配了足够的栈与堆空间,但是我在的使用malloc分配内存时,一直分配不成功,这是什么原因?
    发表于 06-09 07:24

    请问stm32cubeide中如何查看版本日志?

    stm32cubeide中如何查看版本日志?看能支持哪些芯片型号?
    发表于 04-27 08:36

    stm32cubeIDE使用malloc失败的原因?

    我在stm32cubeIDE环境下,已经分配了足够的栈与堆空间,但是我在的使用malloc分配内存时,一直分配不成功,这是什么原因?
    发表于 04-27 06:45

    最新版STM32CubeIDE无法安装怎么解决?

    最新版STM32CubeIDE无法安装,这应该如何解决,已用管理员身份运行
    发表于 04-27 06:20

    STM32CubeIDE无法启动正常调试是哪里出了问题?

    STM32CubeIDE始终正常使用中,昨日系统升级为 macOS Sequoia 版本,启动调试出现错误提示,重新安装应用程序及 st-stlink-server 驱动,仍提示同样错误。 目前
    发表于 03-14 16:30

    请问STM32CubeIDE v1.16.1支持代码补全功能吗?如何开启呢?

    STM32CubeIDE v1.16.1支持代码补全功能吗?如何开启呢?
    发表于 03-14 06:47

    使用STM32CubeIDE调试STM32MP157D的M4内核时报了错误怎么解决?

    我使用STM32CubeIDE调试STM32MP157D的M4内核时报了下图这个错误: 经过我的排除后发现,应该是STM32CubeIDE上传"
    发表于 03-14 06:01

    STM32CubeIDE在线调试时,如何配置擦除Flash的部分Page?

    STM32CubeIDE在线调试时,如何配置擦除Flash的部分Page
    发表于 03-13 08:02

    STM32CubeIDE为什么无法生成工程和代码?

    各位大佬好,我是一名新手小白,当我在使用STM32CubeIDE时,出现了1图弹窗,显示我缺少必要固件包,而导致我无法生成工程和代码,但我已经正常登录,且在创建工程时STM32CubeIDE就已经
    发表于 03-12 06:00

    请问STM32CUBEIDE如何开启代码联想功能

    STM32CUBEIDE如何开启代码联想功能
    发表于 03-10 08:23

    STM32CubeIDE在线调试的时候如何让watch的变量实时刷新?

    STM32CubeIDE在线调试的时候如何让watch的变量实时刷新
    发表于 03-07 16:27