前端开发入门到精通的在线学习网站

网站首页 > 资源文章 正文

STM32单片机开发之打通调试信息输出功能

qiguaw 2024-10-04 01:51:21 资源文章 15 ℃ 0 评论

1 功能需求

嵌入式软件开发过程中的调试对开发人员来说是比较关键的功能,目前主流的IDE都具备在线调试功能,可在线设置断点监视程序的变量、内存数据以及单片机寄存器数据等,但是都需要设置断点,如果不设置断点,这些调试功能基本不能用,在有些功能需求开发中,代码必须连续运行,不能设置断点中断程序,那么就需要通过某种方式能够把程序运行过程中需要的信息输出,我认为在开发任何功能以前、编写任何应用代码以前最好能够把调试信息输出的功能先实现,这样后续开发和调试程序会非常方便,就像在Linux系统终端下面一样,可以实时直接打印调试信息。

2 STM32单片机调试信息输出功能的实现方式

2.1 通过串口输出到电脑

2.2 通过外接显示设备(比如OLED显示屏、LED显示屏)输出

2.3 通过ARM内核自带的与仿真器通信接口输出

上述前两种方式都需要单片机外接东西,同时还需要把串口或者显示屏正确驱动,既需要硬件支持,又需要单片机软件支持,否则无法输出调试信息,今天讲述的就是通过第3种方式输出调试信息,不需要单片机外接设备,只是利用下载仿真器和ARM内核自带的功能即可输出调试信息到电脑的IDE软件,所需外围条件最少。

3 具体实现步骤

以STM32F103芯片为例,其它芯片同样用法。

3.1 所用工具

NUCLEO-F103RB 开发板

Keil uVision5.252

3.2 用STM32CubeMX配置单片机参数及生成代码模板

如上图所示,调试口的选择是必须的,可以选择串行通信模式。

如上图所示,工具链/IDE选择MDK-ARM V5,

如上图所示,点击生成代码,如下图所示:

点击打开项目,默认用Keil打开。

3.3 Keil的设置

选择项目,点击目标选项,如下图所示:

选择Debug选项卡,然后点击设置,如下图所示

然后选择Trace选项,启用Trace选项,如下图所示:

如上图所示,内核时钟一定要设置成与单片机工作时钟一样,意思是与下图所示的一致,否则Keil输出窗口显示不正常,会显示乱码。

3.4 代码编写

在main.c里重新定义printf,并实现,主要代码为:

关键代码:

然后就可以调用printf函数输出任意调试信息,如下例输出定时器时间戳:

然后在Keil的调试界面查看输出信息,当然必须在调试模式下,如下图所示:

本文暂时没有评论,来添加一个吧(●'◡'●)

欢迎 发表评论:

最近发表
标签列表