新手上路
- 积分
- 43
- 金钱
- 43
- 注册时间
- 2015-11-7
- 在线时间
- 6 小时
|

楼主 |
发表于 2016-9-24 14:41:16
|
显示全部楼层
主函数大概是这样的:初始化,显示初始的一个界面,检测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);
}
|
|