使用下载代替物理串口输出-STM32 Debug (printf) Viewer
2023-12-16 20:41:20
硬件要求
STM32的PB9、PB10引脚的串口1通常用作其他功能使用后,无法通过printf()函数打印输出想要调试输出查看变量或调试信息。现已使用另外一种方法实现printf()函数打印输出。
ST-Link要使用标准接口的下载器引脚就可以了,常规下载引脚有CLK、IO、GND、VCC外还需要一个特殊引脚TDO,位于STM32的PB3引脚。所以说如果没引PB3引脚(TDO)出来,基本上用不到这个文章了。
配置方法
本人使用的是STM32F1,demo使用hal库,下载器使用官方的ST-ling。
点击Keil工具栏的 Manage Run-Time Environment
将STDOUT,STDIN,STDERR勾选,并设置为ITM
点击工具栏的扳手,进入Debug选项,选择Settings,进入Trace,设置Core Clock为72MHz,勾选Trace Enable,将ITM Stimulus Ports设置为0x00000001和0x00000000。点击确定。
这里是72Mhz,要看你的主频是多少了。
代码要求
重新添加printf打印输出的重定义函数
uart.c
//下载器UART输出
#if 1
//#pragma import(__use_no_semihosting)
//标准库需要的支持函数
struct __FILE
{
int handle;
};
FILE __stdout;
//定义_sys_exit()以避免使用半主机模式
void _sys_exit(int x)
{
x = x;
}
//重定义fputc函数
int fputc(int ch, FILE *f)
{
ITM_SendChar(ch);
return ch;
}
#endif
之后跟普通串口一样,在需要打印的地方输入printf函数。
打印输出结果
烧录程序,进入debug模式,按下图所示进行配置即可正常运行
文章来源:https://blog.csdn.net/weixin_41226265/article/details/134956899
本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。 如若内容造成侵权/违法违规/事实不符,请联系我的编程经验分享网邮箱:veading@qq.com进行投诉反馈,一经查实,立即删除!
本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。 如若内容造成侵权/违法违规/事实不符,请联系我的编程经验分享网邮箱:veading@qq.com进行投诉反馈,一经查实,立即删除!