主题中讨论的其他器件:LAUNCHXL-F28379D、、 C2000WARE
工具与软件:
您好!
我目前使用 LAUNCHXL-F28379D、特别是从 SD 卡读取数字数据。 我在使用 strtod 函数时会遇到问题。
下面、我将正在使用的代码和文本文件的内容包含在 SD 卡中。
在调试过程中、我观察到串形式的数据被正确读取并存储在变量"tok"中。 但是、在使用 strtod 函数后、无论输入字符串如何、存储在 Array 中的数值始终为10。
问题可能是什么?
谢谢你。
代码:
/*
* sd_Card.c
*/
#include "driverlib.h"
#include "device.h"
#include "board.h"
#include
#include
#include
#include
双 var1;
双 var2;
双 var3;
双 var4;
双 var5;
uint16_t SDFatFS_CONFIG_COUNT = 1;
SDFatFS_Object sdfatfsObject;
SDSPI_Object SDspiObject ={
spiHandle = mySDCardSPI_BASE、
.piCsGpioIndex = mySDCardCS
};
SDFatFS_Object* SDFatFS_CONFIG []={&sdfatfsObject};
sdspi_handle sdspiHandle = ssdspiObject;
/*字符串转换宏*/
#define STR_(n)#n
#define STR (n) STR_(n)
/*用于 FatFs 的驱动器编号*/
#define DRIVE_NUM 0
FRESULT fresult;
FIL src;
第400章:我是你的
char lettura [array_size];
双数组[20];
空 Lettura_sd (空)
{
board_init();
SDFatFS_init();
SDFatFS_Handle SDFatFS_Handle = SDFatFS_open (SDspiHandle、DRIVE_NUM);
如果(sdFatFs_Handle == NULL)
{
while (1);
}
// Lettura file con parametri
char inputfile[]= STR (DRIVE_NUM)":input.txt";
fresult = f_open (& src、inputfile、fa_read);
if (fresult != FR_OK){
while (1);
}
uint16_t bw;
f_read (&lettura src、40、&bw);
char* tok;
char* stopstring;
Tok = strtok (lettura、":");
tok = strtok (NULL、":");
int N_variables = atoi (tok);
内部 I;
对于(I = 0;I<N_variables;I++)
{
tok = strtok (NULL、":");
array[i]= strtod (tok、&stopstring);
}
fresult = f_close (& src);
if (fresult!= FR_OK)
{
while (1);
}
Var1 = Array [0];
Var2 = Array [1];
Var3 = Array [2];
var4 = Array[3];
var5 = Array[4];
}
int32_t fatfs_getFatTime (void)
{
返回0;
}
文本文件:
无变量:5
Var1:17
VAR2:53.4
Var3:0.003
var4:101232
var5:1.30467

