文章目录
- 前言
- 一、板载资源
- 二、具体步骤
- 1.打开CubeMX进行USB配置
- 1.1 使用外部高速时钟,并修改时钟树
- 1.2 打开SPI1,参数默认即可(SPI根据自己需求调整)
- 1.3 打开串口,参数默认
- 1.4 生成工程
- 2.配置SPI
- 2.1 打开SPI驱动
- 2.2 声明使用SPI1
- 2.3 将stm32l4xx_hal_msp.c中void HAL_SPI_MspInit(SPI_HandleTypeDef* hspi)和void HAL_SPI_MspDeInit(SPI_HandleTypeDef* hspi)剪切至board.c
- 2.4 使能SPI
- 3. 打开其他配置
- 编译,烧录
前言
本文采用开发板为STM32L475VET6(潘多拉开发板),使用RT_Thread Studio基于芯片开发模式,系统版本为4.0.3,完成TF 卡文件系统实验,展示如何在 TF 卡上创建文件系统(格式化卡),并挂载文件系统到 rt-thread 操作系统中
一、板载资源
TF 卡座通过 4 根线与 STM32 连接,SD 卡的片选(SD_CS)连接 PC3, SD 卡的 SPI 接口连接在 STM32L4 的 SPI1 上面
二、具体步骤
1.打开CubeMX进行USB配置
1.1 使用外部高速时钟,并修改时钟树
1.2 打开SPI1,参数默认即可(SPI根据自己需求调整)
1.3 打开串口,参数默认
1.4 生成工程
2.配置SPI
官方给出教程
2.1 打开SPI驱动
2.2 声明使用SPI1
2.3 将stm32l4xx_hal_msp.c中void HAL_SPI_MspInit(SPI_HandleTypeDef* hspi)和void HAL_SPI_MspDeInit(SPI_HandleTypeDef* hspi)剪切至board.c
2.4 使能SPI
3. 打开其他配置
编译,烧录
测试代码
/** Copyright (c) 2006-2025, RT-Thread Development Team** SPDX-License-Identifier: Apache-2.0** Change Logs:* Date Author Notes* 2025-02-22 RT-Thread first version*/#include <rtthread.h>
#include <board.h>
#define DBG_TAG "main"
#define DBG_LVL DBG_LOG
#include <rtdbg.h>
static int rt_hw_spi1_tfcard(void)
{__HAL_RCC_GPIOC_CLK_ENABLE();rt_hw_spi_device_attach("spi1", "spi10", GPIOC, GPIO_PIN_3);return msd_init("sd0", "spi10");
}
INIT_APP_EXPORT(rt_hw_spi1_tfcard);#include <rtthread.h>
#include <dfs_fs.h>#define DBG_TAG "main"
#define DBG_LVL DBG_LOG
#include <rtdbg.h>int main(void)
{/* 挂载 TF 卡中的文件系统,参数 elm 表示挂载的文件系统类型为 elm-fat 文件系统*/if (dfs_mount("sd0", "/", "elm", 0, 0) == 0){LOG_I("Filesystem initialized!");}else{LOG_E("Failed to initialize filesystem!");}return 0;
}
如果显示Failed to initialize filesystem!
,这是因为 TF 卡中还没有创建文件系统。如果确定自己的卡是 fat 格式,在 msh 中使用命令 mkfs -t elm sd0
可以在块设备 sd0 中创建 elm-fat 类型的文件系统,即对 TF 卡执行格式化。