STM32移植FATFS+USB+FLASH+PDFLIB库总结

    近期在基于原子哥的MINISTM32开发板例程基础上,自己搭建了工程,工程支持USB读卡器功能、文件系统功能、PDF文件保存功能(PDFLIB库是引用博客链接:https://www.stmcu.org.cn/module/forum/thread-612305-1-1.html),写一份小结。
    首先介绍自有板资源:STM32F103RET+25Q128  FLASH 芯片

关于FATFS系统移植,基本可以直接使用原子哥的例程,在flash驱动部分注意两处修改:
1、根据自己板子布局,配置片选及其他相关引脚
2、改动了扇区擦除函数,将传参修改为直接传地址,而非扇区编号,相应的需要修改写函数(个人习惯,无关紧要)
void SPI_Flash_Erase_Sector(u32 Dst_Addr)
{
//Dst_Addr*=4096;
SPI_Flash_Write_Enable(); //SET WEL
SPI_Flash_Wait_Busy();
W25QXX_CS=0; //使能器件
SPI1_ReadWriteByte(W25X_SectorErase); //发送扇区擦除指令
SPI1_ReadWriteByte((u8)((Dst_Addr)>>16)); //发送24bit地址
SPI1_ReadWriteByte((u8)((Dst_Addr)>>8));
SPI1_ReadWriteByte((u8)Dst_Addr);
W25QXX_CS=1; //取消片选
SPI_Flash_Wait_Busy(); //等待擦除完成
}
3、FATFS中需要修改的文件:
exfun.c文件,是原子哥封装文件,非文件系统提供,exfuns_init中根据自身需要申请内存即可。
diskio.c文件,FATFS库中自带的文件,需要修改以下几点:
a.定义卷标
b.修改分配给FatFs系统的存储空间,这里需要注意,此处定义的存储空间是以512字节为处理单位,所以FLASH_SECTOR_COUNT =总容量/512,该变量在disk_initialize中有用到
c.修改disk_initialize、disk_read、disk_write、disk_ioctl函数中涉及的flash读、写相关的驱动。需要注意,在移植之前单独测试flash驱动,确保flash驱动工作正常,移植之后基本不会出问题
ffconf.h文件,FATFS库中自带的文件,基本可以直接用原子哥例程,这里修改了磁盘个数_VOLUMES = 1:
关于FATFS详细的修改内容,这里总结的容易出错的点就这些。
在这里插入图片描述

在这里插入图片描述

USB功能移植:
USB移植需要修改的文件:mass_mal.c(USB官方库自带文件) 、hw_config.c(原子哥例程带的文件)。
mass_mal.c中修改MAL_Write、MAL_Read中的flash读写驱动,这里根据需要修改,对存储介质的读写操作驱动在这里添加,只要和磁盘编号对应即可。
MAX_LUN宏定义用来确定磁盘个数,0表示一个、1表示2个,以此类推。
hw_config.c文件是对应USB中断的处理。

注意:a,USB的时钟配置,需要根据自己代码系统时钟调整,USB分频只支持1分频和1.5分频; b. 如果没有用到串口功能,需要将printf打印代码屏蔽掉。c.上拉电阻的阻值(1.5K)和上拉位置需要确定好
在这里插入图片描述

PDFLIB的移植:
PDFLIB的移植比较简单,直接引用pdflib.c pdflib.h文件即可(本人在移植中遇到内存溢出导致文件创建失败的问题,通过单步调试定位,建议在代码中增加对入参、返回值合法性的判断,尤其是新手容易忽略。)

  • 1
    点赞
  • 9
    收藏
    觉得还不错? 一键收藏
  • 2
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论 2
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值