1、利用Live Expression 实时显示变量数据;2、利用SWV的SWO功能实现printf打印输出;3、利用SWV实现数据实时跟踪动态图形显示;4、利用CubeIDE集成的串口终端软件实现printf输出;
要实现liveexpression,首先要在debugger配置中使能该功能,如下图中1处所示。若要使用SWV功能,也需在debugger配置中使能相关选项,如下图中2处所示。
要实现SWO输出,基于CubeMx进行配置时,要做如下操作:
然后在代码里需添加些许代码,在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 Expression和SWO 打印输出结果。
uint8_t countcir=0;
float Var1=0.0;
float Var2=0.0;
要通过SWO输出结果,在CubeIDE里面还需打开相关功能项,如下图所示:
编译完成后,点击小虫子图标进入调试状态并运行:
我们可以看到,下图右上角是live expression结果,图形下部分是基于SWO的printf输出。
如果我们要利用SWV实现变量数据的实时图像显示,还需要做些配置。
打开IDE环境下window/SWV的相关功能项,即将下图中第1部分中SWV下面的SWV Data Trace Timeline Graph选上。然后进入调试状态,点击下图中第2部分的蜻蜓状的图标进入设置阶段,即下图中的第3部分。 这里我对变量countcir和Var2进行实时监测,做适当的勾选和填写,并启用ITM port0。【注意图中星号所标记的地方】
打开IDE环境下window/SWV的相关功能项,即将下图中第1部分中SWV下面的SWV Data Trace Timeline Graph选上。然后进入调试状态,点击下图中第2部分的蜻蜓状的图标进入设置阶段,即下图中的第3部分。 这里我对变量countcir和Var2进行实时监测,做适当的勾选和填写,并启用ITM port0。【注意图中星号所标记的地方】
配置完成确认后,再进入调试状态并运行,可以看到下面结果:
上图中下半部分的红色正弦波是Var2的实时显示图形,橙色直线是countcir的实时变化图形。
顺便提醒下,我在上面的输出中使用到了浮点数,要想printf正常运行,有个地方我们还需要在工程属性那里做些配置,如下图示,勾选即可。
下面简单介绍下使用STM32CubeIDE集成的串口终端软件基于UART做打印输出。平常我们基于UART做printf时往往还得在PC端装个串口终端软件,如果使用CubeIDE就可以省去这一步了,无须额外安装类似工具软件了,它已经给我们集成了相关部件在里面。
当我们完成编译,进入调试状态后,可以参照下图所示步骤进行配置。
当然,相应的重定向代码还是要自行添加的,这点跟使用其它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的设计资源区,如下图所示:
有兴趣的可以去看看,观看时建议选择超清效果来看,否则有些内容可能看不清。如果有人不知道哪里可以下载免费的STM32CubeIDE,点击左下方的“原文阅读”获取链接信息,它支持多个OS,你选择所需要的版本,比方windows版的。
审核编辑 :李倩
声明:本文内容及配图由入驻作者撰写或者入驻合作网站授权转载。文章观点仅代表作者本人,不代表电子发烧友网立场。文章及其配图仅供工程师学习之用,如有内容侵权或者其他违规问题,请联系本站处理。
举报投诉
-
STM32
+关注
关注
2266文章
10871浏览量
354778 -
调试
+关注
关注
7文章
572浏览量
33894 -
变量
+关注
关注
0文章
613浏览量
28328
发布评论请先 登录
相关推荐
在DRA7xx器件上使用CONFIG-FS的USB复合小工具
电子发烧友网站提供《在DRA7xx器件上使用CONFIG-FS的USB复合小工具.pdf》资料免费下载
发表于 10-10 09:26
•0次下载
请问STM32CubeIDE如何加载外部bin文件?
我有一个外部的bin文件,想要编译、链接到stm32工程里,如何用stm32cubeide来实现呢?
我知道在keil中可以添加一个.s文件可以实现,但是keil中用汇编指令INCBIN,在stm32cubeide中如何实现呢?
发表于 05-30 06:41
STM32CUBEIDE出现error downloading following files的原因?
STM32CUBEIDE出现error downloading following files
发表于 05-20 07:05
原理图设计OrCAD Capture 小工具:Parts操作小助手
看出该小工具总共有3个功能,分别是:Align、Brush、NCand RE(Reset);其详细操作如下:4.1Brush-格式刷在原理图设计中,如果Parts的Reference、Value排列比较
发表于 04-17 16:49
stm32cubeIDE代码运行时间如何查看?
stm32cubeIDE 代码运行时间,如何查看?就如 keil 调试时候那样,可以测试代码的运行时间。但是在stm32cubeIDE 中,一直没有找到这个功能,不知道哪位高人可以提示
发表于 04-16 08:10
STM32CubeIDE如何调试中修改变量值?
使用STM32CubeIDE中发现调试部分功能不能满足。目前调试中最不方便的就是,不断点,在运行状态时,不能实时修改全局变量值。
但是目前没法找到该
发表于 04-15 06:44
STM32CubeMX生成stm32cubeide工程报错的原因?怎么解决?
使用STM32CubeMX,建立了STM32F103VC的工程文件,能够生成IAR工程,正常使用没有问题。由于IAR调试时老是闪退,想换STM32CubeIDE用用,安装了最新的1.4
发表于 04-07 07:14
在STM32CubeIDE里用STLINK调试下载程序老是出错的原因?
哪位大神知道在STM32CubeIDE里用STLINK调试下载程序老是出错,显示启动GDB服务器失败!要么找不到STLINK序列号!反正用STLINK下载不了
发表于 03-11 07:27
STM32CubeIDE找不到elf
库(STM32Cube),提供了丰富的开发工具和功能,帮助开发者更快、更方便地开发嵌入式应用。 在使用STM32CubeIDE开发STM32
评论