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

文章目录

      • 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
    VS code+STM32CubeMX 使用 FreeRTOS+FatFS+USB_DEVICE 搭建 SD卡 读卡器 和 读写 SD卡 示例项目_第1张图片
  • 打开 CubeMX,新建一个STM32F4 项目,并保存到上一步新建的 EIDE 项目目录中
    VS code+STM32CubeMX 使用 FreeRTOS+FatFS+USB_DEVICE 搭建 SD卡 读卡器 和 读写 SD卡 示例项目_第2张图片
  • 修改 CubeMX 的代码生成选项
    VS code+STM32CubeMX 使用 FreeRTOS+FatFS+USB_DEVICE 搭建 SD卡 读卡器 和 读写 SD卡 示例项目_第3张图片

2. 配置 CubeMX 项目

  • 时钟配置
    VS code+STM32CubeMX 使用 FreeRTOS+FatFS+USB_DEVICE 搭建 SD卡 读卡器 和 读写 SD卡 示例项目_第4张图片
  • 启用 SWD 调试接口,将 HAL 库的时基源选择为一个通用定时器(因为 Systick 将会被 FreeRTOS 占用)
    VS code+STM32CubeMX 使用 FreeRTOS+FatFS+USB_DEVICE 搭建 SD卡 读卡器 和 读写 SD卡 示例项目_第5张图片
  • 启用 FreeRTOS,设置 堆大小 和 内存分配算法,并配置 任务
    VS code+STM32CubeMX 使用 FreeRTOS+FatFS+USB_DEVICE 搭建 SD卡 读卡器 和 读写 SD卡 示例项目_第6张图片
    配置两个任务
    VS code+STM32CubeMX 使用 FreeRTOS+FatFS+USB_DEVICE 搭建 SD卡 读卡器 和 读写 SD卡 示例项目_第7张图片
  • 使能外设 SDIO,4 线模式,并配置时钟 6MHz,使用 DMA
    VS code+STM32CubeMX 使用 FreeRTOS+FatFS+USB_DEVICE 搭建 SD卡 读卡器 和 读写 SD卡 示例项目_第8张图片
    使能 SDIO DMA 传输
    VS code+STM32CubeMX 使用 FreeRTOS+FatFS+USB_DEVICE 搭建 SD卡 读卡器 和 读写 SD卡 示例项目_第9张图片
  • 启用 FatFs,进行一些简单的配置
    VS code+STM32CubeMX 使用 FreeRTOS+FatFS+USB_DEVICE 搭建 SD卡 读卡器 和 读写 SD卡 示例项目_第10张图片
    FatFs 平台设置
    VS code+STM32CubeMX 使用 FreeRTOS+FatFS+USB_DEVICE 搭建 SD卡 读卡器 和 读写 SD卡 示例项目_第11张图片
  • 使能外设 USB_OTG_FS
    VS code+STM32CubeMX 使用 FreeRTOS+FatFS+USB_DEVICE 搭建 SD卡 读卡器 和 读写 SD卡 示例项目_第12张图片
  • 启用 USB_DEVICE,选择大容量储存设备
    VS code+STM32CubeMX 使用 FreeRTOS+FatFS+USB_DEVICE 搭建 SD卡 读卡器 和 读写 SD卡 示例项目_第13张图片
  • 使能外设 UART1,用来打印日志
    VS code+STM32CubeMX 使用 FreeRTOS+FatFS+USB_DEVICE 搭建 SD卡 读卡器 和 读写 SD卡 示例项目_第14张图片
  • 使能 SDIO 全局中断,配置中断优先级
    VS code+STM32CubeMX 使用 FreeRTOS+FatFS+USB_DEVICE 搭建 SD卡 读卡器 和 读写 SD卡 示例项目_第15张图片
  • 最后一步,点击 GENERATE CODE 生成代码到 EIDE 项目目录下,结果如下图
    VS code+STM32CubeMX 使用 FreeRTOS+FatFS+USB_DEVICE 搭建 SD卡 读卡器 和 读写 SD卡 示例项目_第16张图片

3. 配置 EIDE 项目

  • 将启动文件 startup_stm32f407xx.s 复制到 Core/src 里
    VS code+STM32CubeMX 使用 FreeRTOS+FatFS+USB_DEVICE 搭建 SD卡 读卡器 和 读写 SD卡 示例项目_第17张图片
  • 点击添加源文件目录,将生成的代码目录加到项目中
    VS code+STM32CubeMX 使用 FreeRTOS+FatFS+USB_DEVICE 搭建 SD卡 读卡器 和 读写 SD卡 示例项目_第18张图片
  • 打开 Makefile,将要用的宏添加到项目
    VS code+STM32CubeMX 使用 FreeRTOS+FatFS+USB_DEVICE 搭建 SD卡 读卡器 和 读写 SD卡 示例项目_第19张图片
  • 配置编译选项

设置芯片类型,硬件浮点
VS code+STM32CubeMX 使用 FreeRTOS+FatFS+USB_DEVICE 搭建 SD卡 读卡器 和 读写 SD卡 示例项目_第20张图片
将 useCustomScatterFile 设置为 true,将 scatterFilePath 设置成 cubeMX 生成的链接脚本
VS code+STM32CubeMX 使用 FreeRTOS+FatFS+USB_DEVICE 搭建 SD卡 读卡器 和 读写 SD卡 示例项目_第21张图片

4. 编写代码

  • 实现 printf 函数的底层接口
    VS code+STM32CubeMX 使用 FreeRTOS+FatFS+USB_DEVICE 搭建 SD卡 读卡器 和 读写 SD卡 示例项目_第22张图片
  • 新建两个源文件,添加一些更方便的日志打印函数
    VS code+STM32CubeMX 使用 FreeRTOS+FatFS+USB_DEVICE 搭建 SD卡 读卡器 和 读写 SD卡 示例项目_第23张图片
  • 实现 usbd_storage_if.c 中的接口函数,共 4 个
    VS code+STM32CubeMX 使用 FreeRTOS+FatFS+USB_DEVICE 搭建 SD卡 读卡器 和 读写 SD卡 示例项目_第24张图片
  • 为 MainTask 任务添加示例代码,功能:每隔 10s 读取文件 abcd.txt 的内容,并打印到串口
    VS code+STM32CubeMX 使用 FreeRTOS+FatFS+USB_DEVICE 搭建 SD卡 读卡器 和 读写 SD卡 示例项目_第25张图片
  • 为 LedIndicator 任务添加闪烁指示灯的代码,此处使用 PA1,要使用其他引脚请在 cubeMX 中完成配置,然后重新生成代码
    VS code+STM32CubeMX 使用 FreeRTOS+FatFS+USB_DEVICE 搭建 SD卡 读卡器 和 读写 SD卡 示例项目_第26张图片
  • 为 Error_Handler 和 assert_failed 添加一些日志提示
    VS code+STM32CubeMX 使用 FreeRTOS+FatFS+USB_DEVICE 搭建 SD卡 读卡器 和 读写 SD卡 示例项目_第27张图片

5. 编译下载

  • 点击 Rebuild 开始编译,生成了大约 222 KB 的可执行程序
    VS code+STM32CubeMX 使用 FreeRTOS+FatFS+USB_DEVICE 搭建 SD卡 读卡器 和 读写 SD卡 示例项目_第28张图片
  • 把板子的 usb 接到电脑,连接好串口,给 SD 卡槽插上 SD 卡,连接好仿真器,在 EIDE 上配置好烧录器,点击 Upload To Device 下载到芯片
    VS code+STM32CubeMX 使用 FreeRTOS+FatFS+USB_DEVICE 搭建 SD卡 读卡器 和 读写 SD卡 示例项目_第29张图片

6. 效果展示

  • 等待一会,发现电脑已成功识别 STM32 读卡器
    VS code+STM32CubeMX 使用 FreeRTOS+FatFS+USB_DEVICE 搭建 SD卡 读卡器 和 读写 SD卡 示例项目_第30张图片
  • 打开磁盘,新建一个 abcd.txt 文本文件,随便输入一些内容,然后保存
    VS code+STM32CubeMX 使用 FreeRTOS+FatFS+USB_DEVICE 搭建 SD卡 读卡器 和 读写 SD卡 示例项目_第31张图片
    打开串口监视器,发现已输出文件的内容
    VS code+STM32CubeMX 使用 FreeRTOS+FatFS+USB_DEVICE 搭建 SD卡 读卡器 和 读写 SD卡 示例项目_第32张图片
  • 再次更改文件的内容,并保存
    VS code+STM32CubeMX 使用 FreeRTOS+FatFS+USB_DEVICE 搭建 SD卡 读卡器 和 读写 SD卡 示例项目_第33张图片
    发现已成功打印更改后的文件内容
    VS code+STM32CubeMX 使用 FreeRTOS+FatFS+USB_DEVICE 搭建 SD卡 读卡器 和 读写 SD卡 示例项目_第34张图片

你可能感兴趣的:(EIDE,使用教程)