STM32写SD卡数据存在异常

如图,本人想通过STM32将AD采集到的浮点型数据存入SD卡中的.txt文件里,目前数据能够成功存入,但是存入的两个数据之前有一行空行,求网友们帮忙看一看

img


这是.txt文件

img

img


这是SD卡存储程序

里面两个换行啊!两个s_printf都有换行符,去掉其中一个就可以了!

不知道你这个问题是否已经解决, 如果还没有解决的话:
  • 以下回答来自chatgpt:
    1. 如果数据之间存在空行,可能是因为在存储数据时没有控制好字符输出的格式,导致每个数据之后都输入了一个换行符。
    2. 解决方案有两种:
    3. 在输出数据时,使用一个字符串缓冲区,将所有浮点型数据都存入该缓冲区中,最后一次性将整个字符串输出到SD卡中。
    4. 在每次输出数据时,使用一条语句判断当前是否是输出的第一个数据,如果不是,再输出一个换行符,保证数据之间没有多余的空行。 下面给出第二种解决方案的示例代码:
       //首先定义一个标志变量,判断当前是否是输出的第一个数据
       bool isFirstData = true;
       //循环输入数据并输出
       for(int i=0; i<dataSize; i++)
       {
           //判断当前是否是第一个数据,如果不是,先输出一个换行符
           if(!isFirstData)
           {
               f_puts("\r\n", &file);
           }
           else
           {
               isFirstData = false;
           }
           //将数据转换为字符串并输出
           char buf[16];
           sprintf(buf, "%.2f", data[i]);
           f_puts(buf, &file);
       }
    
    1. 在存储数据时,需要注意以下几点:
    2. SD卡可能会出现读写错误,需要添加异常处理代码进行处理。
    3. 存储浮点型数据时,需要考虑精度问题,一般建议在输出时保留一定位数的小数。
    4. 如果数据较大,可能需要分批次存储,不能一次性输出所有数据。

如果你已经解决了该问题, 非常希望你能够分享一下解决方案, 写成博客, 将相关链接放在评论区, 以帮助更多的人 ^-^