c - 使用 STM32 Nucleo 将数据打印到文件中

标签 c embedded printf stm32 uart

我正在使用 STM32F401RE 从压力传感器采样数据。使用此函数,我可以使用 printf() 使用“Tera Term”在终端上打印数据。

int _write(int file, char *data, int len) {
    int bytes_written;
    if ((file != STDOUT_FILENO) && (file != STDERR_FILENO)) {
        errno = EBADF;
        return -1;
    }
    HAL_UART_Transmit(&huart2, (uint8_t*)data, len, 0xFFFFFFFFU);
    return bytes_written;
}

我尝试使用此代码,但它不起作用。

outfile = fopen("output.csv", "a");
data = Read_Pressure();
printf("%d,%d\r\n", time, data);
fprintf(outfile, "%d,%d\r\n", time, data);
time++;
fclose(outfile);

我做错了什么?

最佳答案

您的_write()实现显然仅支持stdoutstderr流,并且它们硬链接(hard link)(不可重定向)到UART2。

您需要一个文件系统、媒体以及该媒体的适当设备驱动程序,然后您需要实现 _write() 以支持除 STDOUT_FILENO(1 ) 和 STDOUT_FILENO(2) 引用文件。

关于c - 使用 STM32 Nucleo 将数据打印到文件中,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/49029591/

相关文章:

c - 用 C 阅读 PDF

c - 在 C 中应用可移植位掩码和标志

c - 具有不同迭代的循环

c - UPD客户端和UDP服务器

c - 从x,y坐标写入图像

c - 如何并行化一个程序

algorithm - 具有较大且不可预测异常的 PID 控制回路

c++ - 从 printf 中删除格式说明符

perl - 如何在 Perl 中使用 sprintf 将零填充到可变长度?

c - 打印 sleep \n