本帖最后由 elephant00 于 2024-2-19 12:12 编辑
在C语言中,printf是一个非常好用的函数,尤其是在程序调试阶段,我们可以通printf打印变量的值来帮助查错。在学习C语言的时候我们的开发环境和运行环境都是PC机,printf函数打印到PC机的屏幕上是顺理成章的事。但当我们在做嵌入式开发时,即使目标机器上有LCD屏幕,直接使用printf函数也是观察不到结果的。这时有经验的工程师一般都会通过重定向printf函数来将printf的定向到串口,再通过USB转TTL等工具从目标主机的串口上读取数据流到电脑。 下面先介绍在Keil中如何重定向printf的输出到USART3。实际操作很简单,总共分为3步: 1.在工程设置中开启Use MicroLIB选项:
开启Use MicroLIB选项
2.在代码中实现自定义的fputc函数,其函数原型为 int fputc(int c, FILE *stream)。printf函数底层是通过调用fputc函数来实现字符输出的,所以我们只需对fputc函数重定义即可。本例中将printf重定向到STM32的USART3,所以函数中用到的寄存器是USART3->SR:
3.最后一步,初始化USART3,使能输出。初始化函数:
|