近期在基于原子哥的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文件即可(本人在移植中遇到内存溢出导致文件创建失败的问题,通过单步调试定位,建议在代码中增加对入参、返回值合法性的判断,尤其是新手容易忽略。)

STM32移植FATFS+USB+FLASH+PDFLIB库总结相关推荐

  1. STM32移植FatFS文件系统最新版R0.14b

    STM32移植FatFS文件系统 目录 一.前言 二.硬件及软件准备 三.移植FatFS文件到工程文件夹下 四.将移植文件添加到工程中 五.修改"diskio.c"文件 六.配置& ...

  2. 【FatFs】基于STM32 SD卡移植FatFs文件系统

    相关文章 <[SDIO]SDIO.SD卡.FatFs文件系统相关文章索引> 1.前言 FatFs是一个通用的FAT/exFAT文件系统模块,用于小型嵌入式系统.它完全是由 ANSI C 语 ...

  3. STM32移植Littlevgl(LVGL)V8.0.2使用文件系统+BMP解码显示外部FLASH中图片

    说明:选择BMP解码图片的方式,是因为此方式不需要占用太多的RAM 一.主要参数及版本 MCU:STM32F103ZET6 LCD:2.8寸ILI9341,使用FSMC驱动 SPI FLASH:W25 ...

  4. 基于STM32移植U8g2图形库——OLED显示(HAL库)

    前言:本文主要内容为将优秀的图形库U8g2移植到STM32单片机上,用于OLED显示精美UI.其实,目前GitHub上有需要优秀的开源GUI库,但是大部分的GUI解决方案并不适合0.96 OLED(1 ...

  5. 使用vscode + gcc进行 STM32 单片机开发(三)DMA读写SD卡,移植FATFS文件系统

    背景 在本系列的前两篇文章( 使用vscode + gcc进行 STM32 单片机开发(一)编译及调试 使用vscode + gcc进行 STM32 单片机开发(二)gcc环境 移植rtthread) ...

  6. USB应用开发笔记之一:STM32上实现USB主机读写U盘

      在项目应用中,经常会有对外交换数据的需求.USB接口读写U盘无疑是一种颇为方便的选择.在这一篇中,我们就来讨论如何在STM32上实现USB主机读写U盘文件的方法. 1.应用概述   在我们的产品上 ...

  7. 【FatFs】手动移植FatFs,将SRAM虚拟U盘

    [FatFs]手动移植FatFs,将SRAM转化为文件系统 1. 实验环境 Keil5 MDK-ARM,编译器使用ARM Compiler V6.16 NUCLEO-H723ZG STM32CubeM ...

  8. stm32f769 寄存器配置SD卡---移植fatfs

    昨天开始在上周实现的SD卡读写基础上移植fatfs文件系统,开始不是很顺利,之前没有搞过,完全按照f767的例程移植的,但是在加载SD卡时一直是失败的,很郁闷,折腾了一天,结果还不理想,睡了个好觉,思 ...

  9. Stm32文件系统FATFS(开始于2021-09-09)

    Stm32文件系统FATFS 参考资料主要是原子和野火两家的讲解. 1.FATFS简介: 适合嵌入式小型单片机,是一个 独立 的软件层文件系统,我们只需要将底层硬件的读取函数移植到FATFS提供的向下 ...

  10. 来了!STM32移植LuatOS,潘多拉示例全新教程

    进击的五月,继上期<使用Air724UG制作简易贪吃蛇>教程之后,@打盹的消防车 又为大家带来基于STM32的潘多拉LuatOS移植全新教程: 为什么使用潘多拉作为教程呢? STM32不能 ...

最新文章

  1. Maya制作风格化的女性跑步动画学习教程
  2. 多功能PCIE交换机之三:PCIE非透明桥 cache一致性
  3. 晒加班晒熬夜……“晒勤奋”是一种病!
  4. face alignment by 3000 fps系列学习总结
  5. 团队作业(五):冲刺总结
  6. 云起智慧中心连接华为_【转发】华为智慧屏HiLink控制联动,操作指南来了!
  7. python多维数组初始化后赋值的问题
  8. 银行工作中有哪些需要注意的事?
  9. cocos creator android之微信开放平台修改签名 baseResp.errCode=-6
  10. linux系统fsck.ext4,Ext4文件系统fsck后损坏修复过程一例
  11. Git:版本控制控制软件
  12. 如何将自己写的项目发布到外网上
  13. 计算机常出现的问题及解决办法,电脑发生故障的常见现象和解决方法
  14. ArcGIS 关于三维立体地图 简单使用,里面的资源就在 arcgis 的demo里面有
  15. 非常全面的前端协作规范
  16. 信息系统项目管理师必背核心考点(六十九)访问控制授权方案
  17. 关于王者荣耀技术背景的文章
  18. Source Insight——C/C++代码阅读器
  19. 电容式触摸感应技术原理之自容式触摸按键电极设计建议(1)
  20. ubuntu如何配置软件更新源和更新镜像

热门文章

  1. jdk1.8以上连接Access数据库
  2. c语言程序设计 朱立华 下载,C语言程序设计 教学课件 朱立华 王立柱 C语言程序设计课件第1章090909.pdf...
  3. STM32学习心得二十五:光敏传感器原理及实验
  4. PIC单片机应用开发实践教程(五): 烧录器简介
  5. oracle数据库安装——最详细全步骤详解
  6. Vue结合uni-app实现手机端的扫码功能
  7. 帆软连接数据库的步骤
  8. 最新迅雷“应版权方要求,文件无法下载”的解决办法
  9. 英特尔 英特尔 显示器音频_英特尔缩小的麻烦
  10. C++与Python混合编程