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

发布时间:2023-06-13  

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

1、利用Live Expression 实时显示变量数据;

2、利用SWV的SWO功能实现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 Expression和SWO 打印输出结果。

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部分。


这里我对变量countcir和Var2进行实时监测,做适当的勾选和填写,并启用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做打印输出。平常我们基于UART做printf时往往还得在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

好,就此打住。希望上面分享能对您有帮助,祝君好运!


文章来源于:电子工程世界    原文链接
本站所有转载文章系出于传递更多信息之目的,且明确注明来源,不希望被转载的媒体或个人可与我们联系,我们将立即进行删除处理。

我们与500+贴片厂合作,完美满足客户的定制需求。为品牌提供定制化的推广方案、专属产品特色页,多渠道推广,SEM/SEO精准营销以及与公众号的联合推广...详细>>

利用葫芦芯平台的卓越技术服务和新产品推广能力,原厂代理能轻松打入消费物联网(IOT)、信息与通信(ICT)、汽车及新能源汽车、工业自动化及工业物联网、装备及功率电子...详细>>

充分利用其强大的电子元器件采购流量,创新性地为这些物料提供了一个全新的窗口。我们的高效数字营销技术,不仅可以助你轻松识别与连接到需求方,更能够极大地提高“闲置物料”的处理能力,通过葫芦芯平台...详细>>

我们的目标很明确:构建一个全方位的半导体产业生态系统。成为一家全球领先的半导体互联网生态公司。目前,我们已成功打造了智能汽车、智能家居、大健康医疗、机器人和材料等五大生态领域。更为重要的是...详细>>

我们深知加工与定制类服务商的价值和重要性,因此,我们倾力为您提供最顶尖的营销资源。在我们的平台上,您可以直接接触到100万的研发工程师和采购工程师,以及10万的活跃客户群体...详细>>

凭借我们强大的专业流量和尖端的互联网数字营销技术,我们承诺为原厂提供免费的产品资料推广服务。无论是最新的资讯、技术动态还是创新产品,都可以通过我们的平台迅速传达给目标客户...详细>>

我们不止于将线索转化为潜在客户。葫芦芯平台致力于形成业务闭环,从引流、宣传到最终销售,全程跟进,确保每一个potential lead都得到妥善处理,从而大幅提高转化率。不仅如此...详细>>