我正在使用 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()
实现显然仅支持stdout
和stderr
流,并且它们硬链接(hard link)(不可重定向)到UART2。
您需要一个文件系统、媒体以及该媒体的适当设备驱动程序,然后您需要实现 _write()
以支持除 STDOUT_FILENO
(1 ) 和 STDOUT_FILENO
(2) 引用文件。
关于c - 使用 STM32 Nucleo 将数据打印到文件中,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/49029591/