使用printf函数在串口终端上打印输出这种调试方法能在一定程度上满足我们的调试要求。但是有的时候串口资源已经被占用或为了节约开发时间不使用串口,这时我们就需要一个不依赖于MCU外设的调试方法,例如非常经典的调试工具-半主机(semihosting)。
半主机是在调试ARM设备时,主机电脑可以与设备进行输入输出通信的一个机构。这个机构可以直接调用C语言库中类似printf和scanf的函数。这个机构的好处在于允许用户使用主机电脑的输入输出设备,方便了工程师们的软件开发过程。Semihosting 是通过设置软件中断(SWI)来实现的。调用了适当的软件中断和易于操作的软件中断的向量。
下面是使用STM32的板子在IAR下测试的实例:
1、首先在源代码中加入#include <stdio.h>,并在适当位置添加
printf("This is the sample project for semihosting\r\n");
2、在工程中进行以下设置:
3、编译工程之后进入Debug模式,再 打开Terminal I/O窗口,运行代码即可看到打印信息了。