gpt4 book ai didi

c - 微 Controller 的sprintf和printf有什么区别

转载 作者:行者123 更新时间:2023-12-03 22:46:37 28 4
gpt4 key购买 nike

我知道 printf 和 sprintf 之间的基本功能差异。但是,我想知道它们之间一些与时间/延迟相关的差异。显然,我想在我的一个自定义构建 RTOS 的任务中使用它。你怎么看 ?我想知道更多它会如何影响系统的性能。 (如果有的话)。通常,由于大量延迟,我不使用打印功能,但我必须在这里强制使用它。

仅供引用,输出使用 RS232 显示在终端窗口上。

谢谢。

最佳答案

这里的主要问题是 printf() 写入 stdout,这会(而且几乎肯定会)阻塞调用线程。在嵌入式系统中,stdout 是一个非常慢的 RS232 端口并不少见。

出于这个原因,您永远不会在实时线程中执行此操作,因为它会迅速变得非实时。

使用 sprintf() 写入缓冲区是相当便宜的(前提是缓冲区已经分配)。它当然不会阻塞。

您可能会发现您的 RTOS 提供了一种异步记录机制,可以从实时线程调用该机制而没有阻塞的风险。这只不过是一个环形缓冲区,您可以在其中写入终端输出和一个较低优先级的线程来将其打印到终端。

关于c - 微 Controller 的sprintf和printf有什么区别,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/12637008/

28 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com