如何在嵌入式 C 中的文本文件中写入数字

How to write numbers in text files in embedded C

我正在使用 EFM32wg280f256,我想通过以下方式调试我正在编写的代码:在 SD 内存中打开一个文件并写入我正在使用的缓冲区的内容。

这是我尝试的最小示例:

#include <stdbool.h>
#include "ff.h"
#include <stdio.h>
#include <complex.h>
#include "arm_math.h"
#include "audioMoth.h"

#define NUMBER_OF_SAMPLES_IN_BUFFERS_DATA       4


static float32_t* buffersDATA[12];


int main(void) {

      //Create buffers
      buffersDATA[0] = (float32_t*)AM_EXTERNAL_SRAM_START_ADDRESS;
      for (int i = 1; i < 12; i += 1) {
          buffersDATA[i] = buffersDATA[i - 1] + NUMBER_OF_SAMPLES_IN_BUFFERS_DATA;
      }

      //Example of collected data
      float32_t var0[] = {-29.499557,-67.498978,-54.499176,-53.499191};


      //Pass collected data to one of created buffers
      for (int j = 0; j <NUMBER_OF_SAMPLES_IN_BUFFERS_DATA; j+= 1){
          *(buffersDATA[0]+j) = var0[j];
      }


      //Initialize file system
      AudioMoth_enableFileSystem();

      // Write text file
      FIL fpt;
      f_open(&fpt,"dataVAR.txt", FA_CREATE_ALWAYS | FA_WRITE);
      for (int i = 0; i <NUMBER_OF_SAMPLES_IN_BUFFERS_DATA; i+= 1){
          char str[8];
          sprintf(str, "%d, ", (int)var0[i]);
          f_puts(str,&fpt);
      }
      f_close(&fpt);

      // Write another text file
      FIL fptr;
      f_open(&fptr,"data.txt", FA_CREATE_ALWAYS | FA_WRITE);
      for (int i = 0; i <NUMBER_OF_SAMPLES_IN_BUFFERS_DATA; i+= 1){
          char str[8];
          sprintf(str, "%d, ", (int)*(buffersDATA[0]+i));
          f_puts(str,&fptr);
      }
      f_close(&fptr);

}

类型转换是因为 sprintf 不支持浮点值,但整数足以让我知道我是否做得好。

当我打开dataVAR.txt时:

-29, -67, -54, -53,

但是data.txt:

0, 0, 0, 0,

当它们应该相同时。

我已经在可执行文件中尝试过相同的操作(对其进行调整)以验证我是否正确传递了值(看起来是这样)。

问题出在哪里?

提前致谢。

好的,问题是我没有初始化单片机和SRAM外部芯片之间的通信。

我做到了,一切都按预期工作。