在进行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、
2、
3、联机进入调试状态,进一步配置:
4、运行看结果:
结果出来了,比较直观,也具备较好的测量能力。比一般的示波器不会差。
二、使用调试工具自带的SWO功能做printf输出
我们在调试过程中往往需要做些printf输出,通常使用UART实现。顺便用下倒还好,不然得单独配置出UART,PC端需装应用软件和win驱动,还得辅以额外的硬件。
其实,我们很多时候可能通过SWO方式做输出就好,只要芯片和调试器支持。
SWO,serial wire output ,一种异步串行通信通道。目前基于Cortex M3,M4,M7内核芯片都支持。通过配置寄存器DBGMCU_CR里的TRACE_IOEN和TRACE_MODE来启用。当然用CUBEMX配置生成初始化代码就更简单了。像下面这样:
跟MDK有关的配置:
1、
2、进入调试状态,点击View/Serial Windows/Debug(printf)Viewer
3、用户代码里添加:
#include “stdio.h”
int fputc(int ch, FILE *f)
{
ITM_SendChar(ch);
return (ch);
}
4、运行看结果:
OK,分享上面两个比较实用的调试输出技巧,希望对您有帮助。
以上就是良许教程网为各位朋友分享的Linu系统相关内容。想要了解更多Linux相关知识记得关注公众号“良许Linux”,或扫描下方二维码进行关注,更多干货等着你 !