gpt4 book ai didi

c - Printf 缓冲 - 比控制台快?

转载 作者:太空宇宙 更新时间:2023-11-04 03:55:27 24 4
gpt4 key购买 nike

我正在调试一些中断服务例程 (ISR),每次进入 ISR 时都需要打印出一些寄存器的内容。固件在 C 中。

每隔几毫秒就会产生一个中断,如果我将 printf() 打印到控制台,它太慢了,我最终错过了中断。打印某些东西的最快方法是什么——无论是打印到缓冲区、文件还是控制台——以及这样做的任何技巧?

[附加信息:我需要在 ISR 中做一些其他事情——例如中断屏蔽和比较、重置中断、启用中断以及最后打印出一些寄存器。]

谢谢

最佳答案

最快的方法是将相关数据存储在缓存中的某个位置,然后在您有空的时候打印它。打印到控制台肯定很慢,使用 printf 也可能不是一个好主意,尤其是当有多个变量要转换时。

由于我不知道你代码的动态,所以我只能给出一些建议。

为您的数据定义一个数据结构。预分配一个足够大的数组,然后放置环形缓冲区机制,处理 ISR 当前可以写入的索引。对于 ISR,这应该相当快,因为​​它只是填充下一个空槽中的值。

在主例程中,您可以随意打印。但是,您必须同步访问并注意 ISR 产生数据的速度不会比您丢弃数据的速度快得多。至少使用适当的环形缓冲区,它不应该崩溃,但您可能会丢失信息。

关于c - Printf 缓冲 - 比控制台快?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/16797825/

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