2019-08-14 01:08发布
小兔天 发表于 2016-9-22 20:13 你现在弄好的程序呢?发出来看看
刘毅壁虎 发表于 2016-10-29 21:31 我觉得如果你的采样频率不是很高,是不是可以每次采样完毕直接对采样到的数据直接进行保存。随后等待第二次 ...
一直都在的星空 发表于 2016-10-31 15:35 继续上一次数据存进的位置写数据。你说的这个采一个数据写一个数据的做法我可以试试
最多设置5个标签!
主函数大概是这样的:初始化,显示初始的一个界面,检测SD卡;若检测到SD卡,向SD卡写入buf2里面的数据。程序下载进去后,验证是可以实现的。我的问题是是否可以定义buf1、buf2两个缓存区?ADC采样的数值存入buf1,buf1满数据存入buf2,同时buf1的数据写入SD卡;buf2满后数据存入buf1,buf2数据写入SD卡……依次交替
int main(void)
{
u32 total,free;
// int i,j;
u8 dir=1;
u16 adcx;
float temp;
FRESULT res;
FIL fsrc;
unsigned char buf2[26]="2013 08 28 16 28.279";
NVIC_Configuration();
delay_init();
uart_init(9600);
exfuns_init();
LCD_Init();
Adc_Init();
usmart_dev.init(72);
mem_init();
LCD_Display_Dir(dir);
POINT_COLOR=BLUE;
LCD_ShowString(10,10,200,16,16,"Molar Monitoring System");
LCD_ShowString(60,50,200,16,16,"Mini STM32");
LCD_ShowString(60,70,200,16,16,"FATFS TEST");
LCD_ShowString(60,90,200,16,16,"ATOM@ALIENTEK");
LCD_ShowString(60,110,200,16,16,"Use USMART for test");
LCD_ShowString(60,130,200,16,16,"2014/3/14");
while(SD_Initialize())
{
LCD_ShowString(60,150,200,16,16,"SD Card Error!");
delay_ms(500);
LCD_Fill(60,150,240,150+16,WHITE);//Çå3yÏÔê¾
delay_ms(500);
}
f_mount(fs[0],"0:",1);
res=f_open(&fsrc,"0:/test1/test1.txt",FA_OPEN_ALWAYS|FA_WRITE);
if(res==FR_OK)
{
res=f_lseek(&fsrc,fsrc.fsize);
res=f_write(&fsrc,buf2, sizeof(buf2),&bw);
}
f_close(&fsrc);
while(exf_getfree("0",&total,&free))
{
LCD_ShowString(60,150,200,16,16,"Fatfs Error!");
delay_ms(500);
LCD_Fill(60,150,240,150+16,WHITE);
delay_ms(500);
}
POINT_COLOR=BLUE;
LCD_ShowString(60,150,200,16,16,"FATFS OK!");
LCD_ShowString(60,170,200,16,16,"SD Total Size: MB");
LCD_ShowString(60,190,200,16,16,"SD Free Size: MB");
LCD_ShowNum(172,170,total>>10,5,16);
LCD_ShowNum(172,190,free>>10,5,16);
delay_ms(5000);
LCD_Clear(WHITE);
POINT_COLOR=BLUE;
LCD_ShowString(20,200,200,16,16,"Molar Monitoring System");
LCD_ShowString(20,220,200,16,16,"ADC:");
LCD_ShowString(100,220,200,16,16,"Voltage: V");
while(1)
{
adcx=Get_Adc_Average(ADC_Channel_1,10);
LCD_ShowxNum(60,200,adcx,4,16,0);
temp=(float)adcx*(3.3/4096);
adcx=temp;
LCD_ShowxNum(170,220,adcx,1,16,0);
LCD_ShowString(180,220,200,16,16,".");
temp-=adcx;
temp*=1000;
LCD_ShowxNum(190,220,temp,3,16,0X80);
delay_ms(250);
}
其次,我有一本疑问,请问,你的数据是如何进行保存的?每次都是保存为一个独立的文件,还是每次数据采集完毕后,继续上次的文件进行保存?
继续上一次数据存进的位置写数据。你说的这个采一个数据写一个数据的做法我可以试试
你是打开一个文件,不关闭,然后一直往里写对吗?你从来都不新建一个文件吗?还是就是用一个文件一写到底?
一周热门 更多>