文章目录

  • 1. 新建项目
  • 2. 配置 CubeMX 项目
  • 3. 配置 EIDE 项目
  • 4. 编写代码
  • 5. 编译下载
  • 6. 效果展示

本例介绍如何使用 vscode 插件 EIDE 和 STM32CubeMX 开发 STM32 项目,并实现一个 使用 FreeRTOS+FatFs 读写 SD 卡,同时将STM32 变成一个 SD卡 读卡器 的示例程序

**注:**本例使用的芯片是 STM32F407VGT6,编译器为 GCC

1. 新建项目

  • 打开 EIDE,新建一个 Cortex-M MCU 空项目,然后打开,将工具链切换到 GCC
  • 打开 CubeMX,新建一个STM32F4 项目,并保存到上一步新建的 EIDE 项目目录中
  • 修改 CubeMX 的代码生成选项

2. 配置 CubeMX 项目

  • 时钟配置
  • 启用 SWD 调试接口,将 HAL 库的时基源选择为一个通用定时器(因为 Systick 将会被 FreeRTOS 占用)
  • 启用 FreeRTOS,设置 堆大小 和 内存分配算法,并配置 任务

    配置两个任务
  • 使能外设 SDIO,4 线模式,并配置时钟 6MHz,使用 DMA

    使能 SDIO DMA 传输
  • 启用 FatFs,进行一些简单的配置

    FatFs 平台设置
  • 使能外设 USB_OTG_FS
  • 启用 USB_DEVICE,选择大容量储存设备
  • 使能外设 UART1,用来打印日志
  • 使能 SDIO 全局中断,配置中断优先级
  • 最后一步,点击 GENERATE CODE 生成代码到 EIDE 项目目录下,结果如下图

3. 配置 EIDE 项目

  • 将启动文件 startup_stm32f407xx.s 复制到 Core/src 里
  • 点击添加源文件目录,将生成的代码目录加到项目中
  • 打开 Makefile,将要用的宏添加到项目
  • 配置编译选项

设置芯片类型,硬件浮点

将 useCustomScatterFile 设置为 true,将 scatterFilePath 设置成 cubeMX 生成的链接脚本

4. 编写代码

  • 实现 printf 函数的底层接口
  • 新建两个源文件,添加一些更方便的日志打印函数
  • 实现 usbd_storage_if.c 中的接口函数,共 4 个
  • 为 MainTask 任务添加示例代码,功能:每隔 10s 读取文件 abcd.txt 的内容,并打印到串口
  • 为 LedIndicator 任务添加闪烁指示灯的代码,此处使用 PA1,要使用其他引脚请在 cubeMX 中完成配置,然后重新生成代码
  • 为 Error_Handler 和 assert_failed 添加一些日志提示

5. 编译下载

  • 点击 Rebuild 开始编译,生成了大约 222 KB 的可执行程序
  • 把板子的 usb 接到电脑,连接好串口,给 SD 卡槽插上 SD 卡,连接好仿真器,在 EIDE 上配置好烧录器,点击 Upload To Device 下载到芯片

6. 效果展示

  • 等待一会,发现电脑已成功识别 STM32 读卡器
  • 打开磁盘,新建一个 abcd.txt 文本文件,随便输入一些内容,然后保存

    打开串口监视器,发现已输出文件的内容
  • 再次更改文件的内容,并保存

    发现已成功打印更改后的文件内容

VS code+STM32CubeMX 使用 FreeRTOS+FatFS+USB_DEVICE 搭建 SD卡 读卡器 和 读写 SD卡 示例项目相关推荐

  1. Stm32CubeMx lwip+freeRTOS TCP 服务

    如何添加lwip参照上一篇   stm32CubeMx lwip + freeRTOS 今天讲一下,如何添加TCP服务 LwIP 提供了三种编程接口,分别为 RAW/Callback API.NETC ...

  2. STM32CubeMX+SPI+FATFS读写SD卡

    一.软件硬件说明 软件:STM32CubeMX V6.6.1 /KEIL5 V5.29 硬件:正点原子mini开发板,SD卡,通过SPI方式驱动SD卡,用的是SPI1接口 以上内容来源于正点原子min ...

  3. STM32CubeMX配置freertos配置任务(一)

    使用STM32CubeMX 配置Freertos 生成一个任务点亮LED stm32cubemx STM32CubeMX 是 ST 意法半导体近几年来大力推荐的STM32 芯片图形化配置工具, 允许用 ...

  4. 认证服务器的搭建_SpringCloud搭建的认证中心和资源服务器的微服务项目源码分享...

    本项目基于spring-cloud-starter-oauth2搭建的认证中心和资源服务器的微服务项目,项目不仅仅简单的demo,项目的出发点在于实战应用.本项目为笔者花了不少时间和精力整理出来的,只 ...

  5. STM32F407ZGT6 fatfs出现挂载成功,但是文件读写失败的原因

    使用正点原子的板子f407,使用野火代码参考博客 2021-07-25 野火板子25MHz晶振改为正点原子8MH晶振_Car12-CSDN博客 参考源码 修复了野火的bug,使用cubemx初始化代码 ...

  6. docker搭建upsource代码审查工具,通过gitlab检出项目

    docker搭建upsource代码审查工具,通过gitlab检出项目 机器配置 docker搭建upsource代码审查工具,通过gitlab检出项目 拉取镜像 创建挂载目录 启动容器 配置账号密码 ...

  7. stm32 Fatfs 读写SD卡

    源:stm32 Fatfs 读写SD卡 转载于:https://www.cnblogs.com/LittleTiger/p/4864052.html

  8. vant 项目_基于 vue3.x+vant3.x 搭建示例项目

    今天给大家分享一些如何使用Vue3.0+Vant3搭建demo项目. 目前市面上有关vue3的项目并不多,vue3的UI组件库有ant-design-vue和vant-ui. 接下来讲解下使用vue3 ...

  9. 使用宝塔搭建环境,以及把自己本地的Web项目通过宝塔发布到远程云服务器上

    文章目录 使用宝塔搭建环境,以及把自己本地的Web项目通过宝塔发布到远程云服务器上 XSheel连接到远程云服务器之后使用宝塔搭建环境 使用宝塔搭建服务器的环境 什么是搭建服务器环境 1.安装宝塔 2 ...

最新文章

  1. 程序怎么才能把自己的删除掉?
  2. SQL SERVER 中identity
  3. 【数论】Crash的数字表格 / JZPTAB(P1829)
  4. js设置select列表中特定项为选中状态
  5. 2019贵州大学计算机研究生,贵州大学2019年硕士研究生招生拟录取名单公示(一)...
  6. 7. Deep Learning From Scratch
  7. java windows 2008_Windows server 2008 R2 安装Java环境
  8. 马云:蚂蚁最应该感谢微信;波音软件修复文件不合格;谷歌开源Cardboard|极客头条...
  9. 传奇gm命令怎么用_传奇GM常用命令
  10. PHP 中的对象传递
  11. 黑群晖二合一已损毁_黑群晖DSM6.2硬盘引导二合一镜像以及安装方法
  12. python爬虫从基础到实战一站式服务
  13. spring注解@Lazy
  14. xsh报告-推荐系统
  15. Linux容器的安装链接
  16. Excel数组与数组公式
  17. 人工智能一大技术:强化学习(RL)
  18. echarts移除百度地图logo方法
  19. Java Security:Java加密框架(JCA)简要说明
  20. 热炒了的《消防设施操作员》,想报考却为何冷中带静?

热门文章

  1. Eclipse PHP 插件配置
  2. C#AE二次开发——使用AE控件创建第一个桌面应用程序
  3. 创业故事分享:本地化论坛的缩影
  4. 大橙子疯博客搬家通知
  5. BUU [0CTF 2016]piapiapia
  6. oracle消耗资源,oracle中资源消耗查看
  7. GRE填空题方法之短语结构解法
  8. HTML js for循环实现多个div
  9. 全志H616:OLED屏应用 — IIC协议
  10. Win10此电脑视频、图片等7个文件夹怎么去除