打印
[STM32F1]

串口打印用printf还是sprintf比较好啊?

[复制链接]
楼主: CarterERO
手机看帖
扫描二维码
随时随地手机跟帖
21
wwppd| | 2024-5-8 18:11 | 只看该作者 回帖奖励 |倒序浏览
你需要更精确地控制内存和CPU资源的使用,可以选择使用sprintf。

使用特权

评论回复
22
Henryko| | 2024-5-8 21:52 | 只看该作者
现在一直用sprintf然后串口发送函数出去

使用特权

评论回复
23
bartonalfred| | 2024-5-9 19:48 | 只看该作者
频繁地使用printf进行串口打印,可能会影响程序的性能,因为printf函数内部需要处理各种格式化和缓冲区操作。

使用特权

评论回复
24
uiint| | 2024-5-10 10:15 | 只看该作者
printf由于其广泛的使用和标准化,通常更容易理解和实现。如果你的团队中有成员不熟悉sprintf,或者你正在编写易于他人理解的代码,那么使用printf可能更加方便。

使用特权

评论回复
25
jimmhu| | 2024-5-10 18:42 | 只看该作者
以考虑使用其他串口打印方法,例如使用HAL_UART_Transmit函数直接发送字符串。

使用特权

评论回复
26
lzmm| | 2024-5-10 22:53 | 只看该作者
sprintf函数是C语言标准库中的一个函数,用于将格式化的输出写入字符串。在STM32中,你可以使用sprintf函数将格式化的输出写入一个字符串缓冲区,然后将该缓冲区发送到串口。这种方法的优点是可以更精确地控制内存和CPU资源的使用,但可能需要更多的代码和处理。

使用特权

评论回复
27
mickit| | 2024-5-12 17:12 | 只看该作者
与printf相比,sprintf不会直接发送数据到串口,因此它本身不会影响串口通信的性能

使用特权

评论回复
28
Bowclad| | 2024-5-12 20:08 | 只看该作者
我也是先用sprintf构建好再发送出去

使用特权

评论回复
29
loutin| | 2024-5-14 15:16 | 只看该作者
如果需要格式化输出并且希望直接通过串口发送,使用printf会更加方便,只需要正确重定向fputc函数即可。

使用特权

评论回复
30
pmp| | 2024-5-15 10:06 | 只看该作者
sprintf会消耗更多的内存资源,因为它需要一个缓冲区来存储格式化后的字符串。如果你的应用运行在资源受限的环境中,那么使用printf可以减少内存压力。

使用特权

评论回复
31
鹿鼎计| | 2024-5-15 10:57 | 只看该作者
事实上,如果您没有成功,只需手写一个重定向

使用特权

评论回复
32
dspmana| | 2024-5-15 14:12 | 只看该作者
如果你的应用对资源使用没有严格限制,且希望代码更简洁,可以选择 printf。
如果你的应用需要尽可能减少资源消耗,或者对内存使用有严格的控制,建议使用 sprintf。

使用特权

评论回复
33
mollylawrence| | 2024-5-15 17:32 | 只看该作者
printf和sprintf都可以用于格式化输出,但sprintf可以将数据写入到一个字符串缓冲区中,而printf则直接将数据发送到输出设备。如果你的应用需要在打印前将数据暂存,或者需要多次使用同一数据,那么sprintf可能更适合。

使用特权

评论回复
34
maudlu| | 2024-5-15 20:54 | 只看该作者
使用sprintf的另一个好处是,如果你知道要发送的数据量很大,你可以预先分配一个足够大的缓冲区来避免溢出。

使用特权

评论回复
35
primojones| | 2024-5-16 14:20 | 只看该作者
sprintf 的优点是不会像 printf 那样频繁地进行内存分配,因此在资源受限的嵌入式系统中更受欢迎。

使用特权

评论回复
36
zerorobert| | 2024-5-16 17:39 | 只看该作者
sprintf则适合先将数据格式化为字符串,然后再通过串口发送函数逐个发送字符。

使用特权

评论回复
37
claretttt| | 2024-5-16 22:06 | 只看该作者
printf函数是C语言标准库中的一个函数,用于将格式化的输出发送到标准输出设备(通常是控制台或串口)。在STM32中,你可以使用printf函数将格式化的输出发送到串口。这种方法的优点是简单易用,但可能会占用较多的内存和CPU资源。

使用特权

评论回复
38
lzbf| | 2024-5-17 08:52 | 只看该作者
使用sprintf的好处是你可以先将数据格式化为一个字符串,然后再根据需要发送这个字符串。这给了你更多的灵活性,比如你可以先检查字符串的长度,或者在发送之前对字符串进行其他处理。

使用特权

评论回复
39
10299823| | 2024-5-17 12:03 | 只看该作者
在STM32中,由于没有标准的输出设备,所以需要对printf进行重定向,使其能够通过串口发送数据。这通常涉及到对fputc函数的重写,因为printf依赖于fputc来执行实际的字符输出。

使用特权

评论回复
40
可怜的小弗朗士| | 2024-5-21 13:56 | 只看该作者
用printf

使用特权

评论回复
发新帖 我要提问
您需要登录后才可以回帖 登录 | 注册

本版积分规则