良许Linux教程网 干货合集 两个STM32开发中基于MDK IDE的调试输出技巧

两个STM32开发中基于MDK IDE的调试输出技巧

在进行STM32开发和调试时,通常需要进行一些直观的输出。如果没有相关的设备或仪器,我们可以利用IDE自带的工具来实现。在这里,我将分享两个基于MDK IDE的调试输出技巧。

一、使用MDK IDE自带的逻辑分析仪查看波形。

例如,我们想要查看STM32定时器的PWM输出,但手头没有示波器或逻辑分析仪,特别是对于学生来说。在这种情况下,我们可以利用MDK自带的逻辑分析仪功能来查看结果。

假设我们使用的是STM32F4芯片,并且希望输出一个脉宽为100us,占空比为40%的波形。我们可以使用TIM3的通道1来输出PWM波形,并使用GPIOA_6(即PA6)引脚进行输出。

在这里,我将省略有关STM32定时器参数配置的具体内容。假设我们已经启用了定时器的比较中断和更新中断,在中断服务函数中将PA口的IDR寄存器的值读取到一个全局变量TIM3_CH1_OUT中。

下面主要介绍与逻辑分析仪相关的配置:

1、

image-20231014195248858
image-20231014195248858

2、

image-20231014195253578
image-20231014195253578

3、联机进入调试状态,进一步配置:

image-20231014195257846
image-20231014195257846

4、运行看结果:

image-20231014195301267
image-20231014195301267
image-20231014195304001
image-20231014195304001

结果出来了,比较直观,也具备较好的测量能力。比一般的示波器不会差。

二、使用调试工具自带的SWO功能做printf输出

我们在调试过程中往往需要做些printf输出,通常使用UART实现。顺便用下倒还好,不然得单独配置出UART,PC端需装应用软件和win驱动,还得辅以额外的硬件。

其实,我们很多时候可能通过SWO方式做输出就好,只要芯片和调试器支持。

SWO,serial wire output ,一种异步串行通信通道。目前基于Cortex M3,M4,M7内核芯片都支持。通过配置寄存器DBGMCU_CR里的TRACE_IOEN和TRACE_MODE来启用。当然用CUBEMX配置生成初始化代码就更简单了。像下面这样:

image-20231014195307779
image-20231014195307779

跟MDK有关的配置:

1、

image-20231014195311164
image-20231014195311164

2、进入调试状态,点击View/Serial Windows/Debug(printf)Viewer

image-20231014195315308
image-20231014195315308

3、用户代码里添加:

#include “stdio.h”

int fputc(int ch, FILE *f)

{

ITM_SendChar(ch);

    return (ch);

}

4、运行看结果:

image-20231014195319639
image-20231014195319639

OK,分享上面两个比较实用的调试输出技巧,希望对您有帮助。

以上就是良许教程网为各位朋友分享的Linu系统相关内容。想要了解更多Linux相关知识记得关注公众号“良许Linux”,或扫描下方二维码进行关注,更多干货等着你 !

137e00002230ad9f26e78-265x300
本文由 良许Linux教程网 发布,可自由转载、引用,但需署名作者且注明文章出处。如转载至微信公众号,请在文末添加作者公众号二维码。
良许

作者: 良许

良许,世界500强企业Linux开发工程师,公众号【良许Linux】的作者,全网拥有超30W粉丝。个人标签:创业者,CSDN学院讲师,副业达人,流量玩家,摄影爱好者。
上一篇
下一篇

发表评论

联系我们

联系我们

公众号:良许Linux

在线咨询: QQ交谈

邮箱: yychuyu@163.com

关注微信
微信扫一扫关注我们

微信扫一扫关注我们

关注微博
返回顶部