
STM32CubeMxmakefile— 文件系统fatfs源码仓库: 码云仓库文章目录STM32CubeMx makefile --- 文件系统fatfs[toc]环境添加串口打印printfSTM32CubeMX 配置配置 SDMMC配置 FATFS时钟配置设置栈空间生成 makefile 项目修改代码编译 (略)烧录 (略)运行环境工具版本说明开发板小熊派IoT开发板建议相同ubuntu16.04版本关系不大STM32CubeMXV6.3.0建议相同L4软件包STM32Cube FW_L4 V1.16.0建议相同STM32CubeProgrammerv2.8.0版本关系不大交叉编译工具链gcc-arm-none-eabi-10.3-2021.07版本关系不大添加串口打印printf请看STM32CubeMx makefile --- 添加串口打印printf章节STM32CubeMX 配置配置SDMMC如下图所示:配置FATFS如下图所示:时钟配置如下图所示:设置栈空间需要增加栈空间的大小, 如下图所示:生成makefile项目注意 : 如果警告配置有误, 请忽略提示, 直接选择 YES 生成修改代码思路:将生成的代码复制到ubuntu上面修改编译, 或者修改好了上传到ubuntu上编译修改stm32cubemx_makefile_sd_fatfs\Src\main.c文件添加 如下代码#includetest_fatfs.htest_fatfs();添加Src/test_fatfs.c和Inc/test_fatfs.h文件Makefile添加Src/test_fatfs.c \Src/test_fatfs.h文件添加代码test_fatfs()声明#ifndef_TEST_FATFS_H#define_TEST_FATFS_Hvoidtest_fatfs(void);#endifSrc/test_fatfs.c文件添加代码test_fatfs()实现#includefatfs.hvoidtest_fatfs(void){FATFS fs;FIL fil;uint32_tw_datas_num;// 写数据长度uint32_tr_datas_num;// 读数据长度uint8_tw_datas[]hello iotxiaohu;// 写的数据uint8_tr_datas[100];// 存放读出来的数据charfilen_name[]test_fatfs.txt;// 文件名printf(\n ****** test fatfs ******\n\n);/* 注册文件系统*/retSDf_mount(fs,,0);if(retSD){printf( mount error : %d \n,retSD);return;}printf( mount OK!!! \n);/* 创建并且打开文件 */retSDf_open(fil,filen_name,FA_CREATE_ALWAYS|FA_WRITE);if(retSD){printf( open file error : %d\n,retSD);return;}printf( open file OK!!! \n);/* 写文件 */retSDf_write(fil,w_datas,sizeof(w_datas),(void*)w_datas_num);if(retSD){printf( write file error : %d\n,retSD);return;}printf( write file OK!!! \n);printf( write Data : %s\n,w_datas);/* 关闭文件 */retSDf_close(fil);if(retSD){printf( close error : %d\n,retSD);return;}printf( close OK!!! \n);/* 打开文件 */retSDf_open(fil,filen_name,FA_READ);if(retSD){printf( open file error : %d\n,retSD);return;}printf( open file OK!!! \n);/* 读取文件 */retSDf_read(fil,r_datas,sizeof(r_datas),(UINT*)r_datas_num);if(retSD){printf( read error!!! %d\n,retSD);return;}printf( read OK!!! \n);printf( read Data : %s\n,r_datas);/* 关闭文件 */retSDf_close(fil);if(retSD){printf( close error!!! %d\n,retSD);return;}printf( close OK!!! \n);/* 比较读取的是否与写的一致 */if(r_datas_numw_datas_num){printf( test fatfs OK!!!\n);}}编译 (略)烧录 (略)运行连接串口, 打开串口调试工具如下: