本文所用开发板为正点原子STM32F767IGT6核心板+水星底板,程序部分使用的是正点原子的HAL库例程作为基础,通过FATFS文件系统实现SD中EXCEL文件的创建与写入数据。
先把例程贴上来:
CSDN:?F767SD-EXCEL.zip-单片机文档类资源-CSDN下载
百度网盘:链接:https://pan.baidu.com/s/1-a0-4JmJiL2cGa2PKOt0GQ?pwd=a49t? 提取码:a49t
FATFS的移植可以参考正点原子放在B站的视频。
写文件相对简单,推荐使用f_printf。\t切换单元格,r\n切换行
fil_fun_return=f_open (&plane_file,"0:/User.XLS",FA_OPEN_ALWAYS|FA_WRITE);//在根目录下创建一个叫User.XLS的EXCEL文件,如果已经存在该文件则写入数据
f_lseek(&plane_file,f_size(&plane_file));//移动文件光标,从而实现内容的追加
f_printf(&plane_file,"第一格\t第二格\t第三格\t第四格\t第五格\r\n第二行");//通过“\t”来切换单元格,通过\r\n来切换行
f_close(&plane_file);//关闭文件
if(fil_fun_return==FR_OK)//如果文件打开成功
{
LCD_ShowString(10,380,200,16,16,"Plane crea/open ok");
}
else LCD_ShowString(10,380,200,16,16,"Plane crea/open erro");
/*以上就是一个EXCEL文件创建与写数据的基本步骤*/
/*下面用EXCEL表格来记录LED灯的状态数据*/
fil_fun_return=f_open (&plane_file,"0:/LED0.XLS",FA_OPEN_ALWAYS|FA_WRITE);//创建一个新的文件
while(1)
{
t++;
if(t==100)
break;
delay_ms(100);
LED0_Toggle;
//将LED灯的状态写入文件中
if(HAL_GPIO_ReadPin(GPIOB,GPIO_PIN_1)==GPIO_PIN_SET )
f_printf(&plane_file,"LED0 ON\r\n");
else f_printf(&plane_file,"LED0 OFF\r\n");
}
f_close(&plane_file);
LCD_ShowString(10,400,200,16,16,"LED0 finish");
}
输出的结果?
|