swv是stlink自带的一个功能(SWO引脚 连接stm32的PB3),可以用来看LOG,从而减少一个UART的使用。相比jlink自带的RTT,jlink需要添加jlink目录下的几个文件,而STLINK的SWV功能就很简单了(一句代码)。
如果STLINK是20pin,那么直接接在stm32的板子上的20pin接口就可以
![](https://i-blog.csdnimg.cn/blog_migrate/f6524409f6c2f9bf0d6adc8902cae686.png)
![](https://i-blog.csdnimg.cn/blog_migrate/a0db4bbfe944d39af133aa246ea485ef.png)
其实只是用到了 7 9 13 引脚,7 9 脚SWD 接在STM32的PA13、PA14引脚,13引脚SWO接在STM32的PB3引脚
打印所需的代码,本来使用的是uart1打印,现在屏蔽,换为stlink的打印,其实就一句代码ITM_SendChar(ch) 即可
//加入以下代码,支持printf函数,而不需要选择use MicroLIB
struct __FILE
{
int handle;
};
FILE __stdout;
//重定义fputc函数
//int fputc(int ch, FILE *f)
//{
// while((USART1->SR&0X40)==0){}//循环发送,直到发送完毕
// USART1->DR = (u8) ch;
// return ch;
//}
int fputc(int ch, FILE *f)
{
ITM_SendChar(ch);
return ch;
}
main函数:
int main(void)
{
static uint8_t i = 0;
delay_init();
while(1)
{
printf("now is %d\n", i++);
delay_ms(1000);
}
}
效果如下图:
![](https://i-blog.csdnimg.cn/blog_migrate/bfc68ffb576a8540ef1672481a7ab4fa.png)