我想使用函数printf
在串口上打印字符。我已经阅读了这两篇帖子1和2,但我不确定理解这句话:
在1st link中说:
要启用printf功能,首先需要创建一个新的__FILE
结构。然后使用FILE结构调用此结构。
为什么我必须创建__FILE
结构我真的没有动摇这个句子。
在2nd link中说
要完成与标准I / O库的分离,我们还必须重新定义__stdout
和__stdin
。这些可以在__FILE
结构声明下面的retarget.c文件中找到。
如果我重新定义这两个变量不是编译错误,我的意思是重新定义。
答案 0 :(得分:1)
这可能是How to make printf work on STM32F103?
的重复无论如何,我也会在上面的帖子中提出我的答案。
编写自己的printf实现是一个选项,可能是我认为最推荐的选项。从标准库实现中获取灵感并编写您自己的版本,仅满足您的要求。通常,您需要做的是,首先重新定位putc函数以通过串行接口发送char。然后使用putc自定义实现覆盖printf方法。也许,一种非常简单的方法是通过递归调用putc函数来逐字符发送字符串。
最后但并非最不重要的是,您可以找到一些轻量级的printf实现。这些轻量级实现提供的代码大小和功能集位于自定义编写的printf函数和库存标准prinf函数(也称为beast)之间。我最近尝试了这一点,并且非常满意它在ARM内核上的内存占用和所需的执行周期数量方面的性能。 http://www.sparetimelabs.com/tinyprintf/tinyprintf.php
-PS
某些时候复制了我自己的着作 - http://mycola.info/2015/02/09/lightweight-printfscanf-for-embedded-applications/
答案 1 :(得分:0)
在您的代码中添加这段代码
Longest simple path contains 4 nodes
[[0, 1, 2, 3], [0, 2, 1, 3]]
仅需编辑此行,请根据设备的串行端口驱动程序进行设置
int