本帖最后由 wenwen2020 于 2020-6-9 17:29 编辑
编写了一个采集温度和pm2.5,把数值实时存入SD卡的程序,出现很奇怪的现象:
1. 只存入温度或pm2.5时,有时成功,再次下载后,只显示2个数据;
2.同时存入温度和pm2.5时,有时温度正常,pm2.5只存入1个或2个数值,有时pm正常,温度却只存入1个或2个数值,就是不能同时正常
3.换卡后,同样的程序,和第一个卡的结果还不一样.
感觉每次下载程序后,写入sd卡的内容很不稳定,实在不知原因,求大佬帮忙看一下.主要程序和运行结果如下:
while(1)
{
ReadSensor(&SensorStructure); //获取传感器值
if(t<100) //存入100次
{
delay_ms(5000);
x=SensorStructure.temperature; // 获取温度值,x已定义为u16
sprintf((char*)buf1,"temp is:%d \r\n",x); //温度值存入buf1,buf1已定义为char buf1[16]
f_open(&fil,"0:/temp.txt", FA_OPEN_ALWAYS|FA_WRITE);
f_lseek (&fil,f_size (&fil));
f_write (&fil,buf1,sizeof(buf1),&bw);
f_close (&fil);
t++;
}
delay_ms(1000);
if (m<100)
{
delay_ms(5000);
z=SensorStructure.PM2_5; //获取pm值,z已定义为u16
sprintf((char*)buf3,"pm25 is:%d \r\n",z); //pm值存入buf3,buf3已定义为char buf3[16]
f_open(&fil,"0:/pm25.txt", FA_OPEN_ALWAYS|FA_WRITE);
f_lseek (&fil,f_size (&fil));
f_write (&fil,buf3,sizeof(buf3),&bw);
f_close (&fil);
m++;
}
}
}
|