zynq之TF卡写入函数f_printf

Posted on 2020-07-31 22:09  绿叶落秋风  阅读(1349)  评论(0编辑  收藏  举报

zynq之TF卡写入函数f_printf

1、基本原理

前面使用f_write写入了数据到TF(SD)卡中,可以实现较短字符串的写入。当字符增加时,容易出现乱码。而f_printf则是专门用于字符串写入的函数,支持整型和字符型数据的写入,可以提高数据写入的灵活性和便捷性。

2、实验操作

要使用f_printf,首先要对ff.h文件进行设置,才能正常使用f_printf函数。注意不是fprintf,这个函数是C语言的系统函数,不能直接用于SD卡的写入。在vitis中设置ff.h文件如下(包括勾选ff.h):

首先在src(创建主函数的地方)文件夹的下方找到prj为后缀的文件,双击打开。

opinions中有一个Navigate to BSP Setting的选项,双击打开。

在board support package中双击Modify BSP Setting

在出现的弹窗中勾选xilff.h文件

在左侧xilffs中将use_strfunc的值改为2(反正不为0,其他值没有测试)

注意,这里有两个board support package(一个是fsbl的,一个是ps7_cortexa9_0的,两个都设置ff.h的use_strfunc值)

操作完成后可以依次查看两个设置的值是否完成。

int Sd_Test2_Write()
{
FIL fil;
FRESULT rc;
int x=0;
if(rc)
{
    ;
}
rc = f_open(&fil,"printf2.txt", FA_OPEN_ALWAYS | FA_WRITE);
f_printf(&fil,"x= %d\n",x);
x+=1;
f_printf(&fil,"x= %d\n",x);
rc = f_close(&fil);
}

简易的测试函数

最后可以向TF卡写入

x=0

x=1

3、分析总结

f_printf和C语言中的printf十分相似,可以灵活写入数据。