gpt4 book ai didi

c - PIC C - 通过 USB 发送 200 个值,但它只发送其中的 25 个左右

转载 作者:行者123 更新时间:2023-11-30 14:30:51 25 4
gpt4 key购买 nike

我有一个 PIC18F4455 微 Controller ,我试图用它通过 USB 发送 200 个值。基本上我使用 for 循环和 printf 语句将值打印到 USB 输出流。然而,当代码执行时,我在串行端口监视器中看到它只发送前 25 个左右的值,然后停止。我的 PIC C 代码如下。它将发送第 25 个左右的值(和逗号),但不会发送任何内容,也不会发送换行符。我试图让它发送所有值,然后在末尾发送换行符。我将它们全部作为字符发送,因为我可以在 PC 端将它们转换。

//print #3
for (i = 0; i <= 199; i++){if (data[i]=='\0' || data[i]=='\n'){data[i]++;}}
for (i = 0; i < 199; i++){printf(usb_cdc_putc, "%c,", data[i]);}
printf(usb_cdc_putc, "%c\n", data[199]);

最佳答案

如果缓冲区太短,您可能会过度填充缓冲区(硬件中的 FIFO)。这就是延迟解决了问题的原因 - 因为在将新字节填充到 FIFO 之前,您给了硬件时间来实际发送一些字节。

阅读 Controller 的数据表以了解 FIFO 有多大。可能有一种方法可以检查它有多满,从而等待少于 20 usec 的恒定时间。

此外,我会使用 putchar 来打印单个字符,而不是 printf

关于c - PIC C - 通过 USB 发送 200 个值,但它只发送其中的 25 个左右,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/2570148/

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