把采集的ad的数据存到SD卡中。
int main(void)
{
u16 fwrite_counter=0;
unsigned char Temp[11];
data_ok_flag=1;
for(i=0;i<12;i++)
{
ad[i]=0;
}
for(i=0;i<12;i++)
{
ad_Mul[i] = 0;
}
delay_init(); //延时函数初始化
RCC_Configuration();
NVIC_Configuration(); //设置NVIC中断分组2:2位抢占优先级,2位响应优先级
uart_init(115200); //串口1初始化,波特率115200
//USART2_Config(); //串口2初始化,波特率115200
printf_init_u3(); //USART3配置
dma_init_adc1();
dma_init_adc3();
delay_ms(1000);mem_init(SRAMIN); //初始化内部内存池
exfuns_init(); //为fatfs相关变量申请内存
printf("************* SD test ****************\r\n");//
SDIO_Interrupts_Config(); // 配置SDIO中断
// sign=1;
res = f_mount(0, fs[0]); //挂载SD卡 0表示卷标,直接传递到底层diskio.c中
if (res != FR_OK)
{
printf("mount filesystem 0 failed : %d\r\n",res);
}
//写文件测试
printf("write file test......\r\n");
res = f_open(file1, "0:/SensorData.txt", FA_OPEN_ALWAYS | FA_WRITE);
if(res != FR_OK)
{
printf("open file error : %d\r\n",res);
}
else
{
f_lseek(file1,file1->fptr+file1->fsize);
res = f_write(file1, textFileBuffer, sizeof(textFileBuffer)-1, &bw);
}
while(1){
//ad采集程序
if(FR_OK==res)
{
if(data_ok_flag)//数据到来
{
// data_ok_flag=0;
sprintf(All_Data,"%d %d %d %d %d %d %d %d %d %d %d %d %d %d %d %d %d %d %d %.3f %.3f %.3f %d %d %d %d %d %d %d %d %d %d %d %d ",
ad[0],ad[1],ad[2],ad[3],ad[4],ad[5],ad[6],ad[7],ad[8],
ad[9],ad[10],ad[11],angle[0],angle[1],angle[2],SetupADC[0],SetupADC[1],SetupADC[2],SetupADC[3],SetupADC[4],SetupADC[5],SetupADC[6],SetupADC[7],SetupADC[8],SetupADC[9],SetupADC[10],SetupADC[11]);//);//浮点型数据转为指定格式的字符串
res = f_write(file1, All_Data, strlen(All_Data), &bw);
res |= f_write(file1, "\r\n",2, &bw);
// fwrite_counter++;
if(FR_OK==res)
{
printf("write data ok! %d\r\n",bw);
}
else
{
break;
}
}//具体结束的条件可以通过串口1接收来的数据进行判断
if(0 == is_check_ok)//条件满足
{
//退出循环
data_ok_flag=0;
f_write(file1, "xin\r\n",13, &bw); //结束写入的标志
f_close(file1);//close file
//break;
}
}
else
{
printf("write data error : %d\r\n",res);
}
}
}