这篇文章为读取打印文件(后缀为gcode的文件),并添加USMART功能调试
因为TFATFS移植与USMATRT没有什么好写的,而且在下方的链接:正点原子教程已经有详细的教程了,所以跳过了TATFS与USMART。
链接为:https://pan.baidu.com/s/1_S0394ZSRZaNxgz3QIbstA
提取码:6718

那么从这里,我们完成了对TF卡的初始化及其FATFS文件系统初始化。
现在我们可以调用FATFS内的函数。

首先我们需要知道如何打开文件,并读取文件的代码

  1. 首先对SD卡初始化,及上一篇的文章中的SD_Initialize(void)函数。
  2. 随后为FATFS申请内存,使用exfuns_init(void)函数。(其实不使用这个函数也是可以的,只不过这样可以整理内存)
  3. 挂载TF卡,使用f_mount(fs[0],“0:”,1)函数,函数内的相关变量,(是需要设定的,再正点原子教程有指出)。
  4. 挂载成功后便可使用FATFS库内的函数了。

但是还是借鉴正点原子的教程,使用正点原子封装好的一些函数。
如果完成了对FTAFS文件系统的初始化后,你会发现在工程文件中有fattester.c文件。
文件内有许多函数

函数名称 函数功能
mf_scan_files 遍历文件 (通过串口返回目录信息)
mf_mount 为磁盘注册工作区
mf_open 打开目录下的文件
mf_close 关闭文件
mf_read 读取打开文件的数据
mf_write 写入数据
mf_opendir 打开目录
mf_closedir 关闭目录
mf_readdir 打开文件夹
mf_showfree 显示剩余容量

差不多了,大概只需要使用这些

打开这个文件,你会发现这个函数

u8 mf_read(u16 len)
{u16 i,t;u8 res=0;u16 tlen=0;printf("\r\nRead file data is:\r\n");for(i=0;i<len/512;i++){res=f_read(file,fatbuf,512,&br);if(res){printf("Read Error:%d\r\n",res);break;}else{tlen+=br;for(t=0;t<br;t++)printf("%c",fatbuf[t]); }}if(len%512){res=f_read(file,fatbuf,len%512,&br);if(res)    //¶ÁÊý¾Ý³ö´íÁË{printf("\r\nRead Error:%d\r\n",res);   }else{tlen+=br;for(t=0;t<br;t++)printf("%c",fatbuf[t]); }  }if(tlen)printf("\r\nReaded data len:%d\r\n",tlen);//¶Áµ½µÄÊý¾Ý³¤¶Èprintf("Read data over\r\n");    return res;
}

因为我们需要一个每次读取一个字节的函数,所以还是需要自己写一个读取函数。(注意在fattester.c文件下下下这个函数,因为需要使用该文件内的文件变量)

u8 zf_read(void)
{u16 i,t;u8 res=0;res=f_read(file,fatbuf,1,&br);if(res)printf("Read Error:%d\r\n",res);return *fatbuf;
}

并在fattester.h头文件声明,增加
u8 zf_read(void);

到此,我们完成了每次读取打开文件的一个字节的函数

在主函数中
完成初始化后,(对USMART初始化后及TF卡、FATFS初始化后)
在串口发送mf_scan_files(“0:”),则会返回目录信息
随后发送mf_open(“0:/aa1.gcode”,1);
打开aa1.gcode文件,随后便可使用函数mf_read读取,或者使用我们写的函数zf_read读取信息。

stm32开发3D打印机(六)——使用FATFS文件系统读取打印文件 获取信息 执行转换 转换坐标(上)相关推荐

  1. stm32开发3D打印机(二)——方向、相关资料链接

    在这编文章里,我将写下3D打印机的相关资料链接和如何运作及之后写文章的大致方向 关于3D打印机(如何diy,零件的3D模型.Arduino源代码等等).写字机器人的资料等,是从多个地方收集,总而言之有 ...

  2. stm32开发3D打印机(三)——ADC热敏电阻测温、PWM控制(已完成)

    3D打印机温度读取 ADC3初始化 主控芯片为stm32f407ZG,对ADC3初始化,精度设定为12位 ADC3代码部分 void init_adc3() /ADC3初始化 {GPIO_InitTy ...

  3. stm32开发3D打印机(五)——TF卡spi协议与FATFS文件系统(已完成)

    借鉴于正点原子stm32 Mini板 下方的代码仅为对TF卡的初始化 FATFS移植方法请看正点原子Mini板教程,以及建议完成USMART的移植 因为TFATFS移植与USMATRT没有什么好写的, ...

  4. stm32开发3D打印机(零)——打印板配置(未完成)

    对BIGTREETECH 的 SKR-PRO-V1.2的端口.定时器.中断等配置说明 板子如下图所示 板子相关资料在下方链接,下文就不全部截图了 链接:https://pan.baidu.com/s/ ...

  5. STM32挂载SD卡基于Fatfs文件系统读取文件信息

    STM32挂载SD卡基于Fatfs文件系统读取文件信息

  6. [笔记]STM32基于HAL库的SDIO+FATFS文件系统

    1.背景 要用到Bootloader升级,APP部分要写运行日志.所以在Bootloader部分的FATFS要做裁剪,裁剪到只剩只读的操作就可以了,而APP端做可读可写. 2.开发板 用的是野火的ST ...

  7. 机械手末端执行器设计,YA32_1000KN四柱万能液压机设计,3D打印机,健身跑步机设计模型,摆动活塞式发动机的结构设计,手机上盖注塑模具设计与仿真加工,汽车防误踏油门机构的设计……

    顶升移载输送机SW 机械手 机械手末端执行器设计模型 机械手 凸轮驱动机构 升降机 机床设计 飞机02 YA32_1000KN四柱万能液压机设计(毕业论文+CAD图纸) 同步带及顶升机构 焊接成型机架 ...

  8. postek二次开发_20190626_二次开发BarTender打印机_C#代码_一边读取TID_一边打印_打印机POSTEK...

    demo代码如下: private void btnPrint_Click(object sender, EventArgs e) { if (this.btnPrint.Text == " ...

  9. 20190626_二次开发BarTender打印机_C#代码_一边读取TID_一边打印_打印机POSTEK

    demo代码如下: private void btnPrint_Click(object sender, EventArgs e){if (this.btnPrint.Text == "停止 ...

最新文章

  1. HDOJ 1214 圆桌会议
  2. Meanshift图像平滑之opencv实现
  3. 天津科技大学 物理实验平台使用教程及相关问题
  4. 这是mac 重置mysql 的三种做法
  5. [html] html如何创建图片热区(img usemap)?
  6. Java中的变量数据类型补充
  7. PHP中基本符号及使用方法
  8. 创建线程的两种方式:继承Thread类和实现Runnable接口
  9. 三星s20计算机怎么添加到桌面,三星s20+怎么分屏?三星s20系列多窗口分屏设置操作步骤...
  10. Hadoop工具让数据仓库迁移更轻松
  11. 数字电路基础知识——锁存器与触发器在Verilog中使用问题
  12. elasticsearch整体结构示意图
  13. python有道翻译
  14. JAVA计算机毕业设计政府会议管理系统Mybatis+系统+数据库+调试部署
  15. 希腊女孩创办自媒体教希腊语,如今用户已达1000人
  16. 微信图片太模糊如何弄清晰?微信图片过期怎么恢复原图
  17. 为什么不建议你吃精致碳水,这里有你需要的答案
  18. C语言函数嵌套定义问题
  19. QT mainwindow.ui: Warning: The name ‘layoutWidget‘ (QWidget) is already in use, defaulting to ‘layou
  20. 计算机网络设备装配调试员职业技能鉴定试卷,计算机装配调试员技师应知试卷(B)附答案...

热门文章

  1. 破解公私域流量割裂难题 京东营销云有新招
  2. 采用用计算机及条形码技术的是什么,条码技术在计算机应用与实践
  3. 动态SQL( if, choose, when, otherwise, trim, where, set, foreach标签讲解)
  4. Web缓存机制(浏览器缓存 CDN缓存 DNS缓存)
  5. 【数据结构(郝斌)】03线性结构-栈
  6. 浏览器缓存(强缓存和协商缓存)
  7. 如何运营好游戏平台和提高玩家留存?
  8. android6.1内存,iPhone 6为何坚持1GB内存?安卓太坑爹!
  9. 游戏设计行业应该选哪一块去学习,然后就业?哪个前景更好
  10. 100亿数据找出最大的1000个数字的4种方法