0
我正在使用ARM(SAM4),它有两个UART,我需要设置流以便我可以使用fprintf在两者上进行打印。如何从UART中定义多个流以用于fprintf
已经尝试过fwopen
没有运气:
FILE * debug;
debug_writefn(void *cookie, const char *buf, int n);
void comm_init(void) {
debug = fwopen(NULL, &debug_writefn);
if (debug == NULL) {
printf("Error");
}
fprintf(debug, "Test");
}
然而,debug_writefn是较新的调用。
我使用arm-none-eabi-*
工具链(我猜它使用newlib),ASF和FreeRTOS。
这个问题是更密切相关,你的编译器和细节它的标准库实现比单片机或硬件,所以它会帮助你与你一起工作。也许还有一个完整的例子(例如,你是否检查了错误返回的'fwopen')。我不认为你可以通过'snprintf'写入一个中间缓冲区,然后将_that_转发到UART来直接和便携的解决方法。 – doynax
什么工具链?什么执行环境(即OS,裸机)?通常在裸机系统上,必须重新定位库;您可以简单地将数据发送到两个端口的stdout或stderr流。 – Clifford
您需要在这里添加一大堆代码,以便它在裸机时很可能不是裸机(您是否使用RTOS)。如果你只是想打印字符串,你不需要大量的C库代码,你可以将字节发送到uart(s)。 –