STM32 H750+SDMMC+FatFs文件系统使用方法

        最近在使用STM32H750VBT6做读写内存卡的操作,配置文件系统卡了将近半个月,方法是根据视频教程进行的,但并没有成功。几经波折才配置成功。

        跟随视频教程配置之后,挂载SD卡出现了FR_DISK_ERROR的错误,该错误是指底层IO配置出现问题所导致的,但是仅配置SDMMC并使用"HAL_SD_GetCardCID"、"HAL_SD_GetCardState"等函数获取SD卡信息是正常的。故确定SD卡以及硬件设备是OK的,最后排查一波之后确认是配置问题导致的。在配置FatFs文件系统的时候,使能DMA就不能挂载,不使能DMA就正常,随后从DMA方向向下排查最后挂载成功,这里做一记录。

Cube MX软件配置内容:

1.时钟树:

        HC卡的最高通讯速率为24MHz,故最终输出时钟速率不能超过24MHz(但测试过程中有过50MHz也能正常通讯的情况,但未进行读取写入测试)。这边配置的是时钟树SDMMC速率直接为24MHz。

        123

2.SDMMC配置:

        配置SDMMC为4线模式,选择全默认选项,因为之前时钟频率已经配置为24MHz,故这里的时钟配置选项选择不分频。

<think>好的,用户想了解如何使用STM32CubeMX配置STM32H750VBT6芯片,需要教程或示例项目。首先,我得回忆一下STM32CubeMX的基本操作步骤,然后结合用户提供的引用内容,看看有哪些可以直接参考的信息。 根据引用[1],CubeMX可以用来配置引脚和CAN通信参数,确保快速上手。这可能涉及选择型号、配置时钟、外设等步骤。引用[2]提到新建工程时使用HAL库或LL库,以及CubeMX是Cube生态系统的一部分,包含多个工具。引用[4]则展示了如何配置SD卡和FatFS,说明外设配置的具体流程,比如配置时钟树、GPIO等。 用户的问题可能包括如何开始新项目,选择芯片型号,配置时钟,设置外设,生成代码等步骤。需要分步骤详细说明,并确保符合用户的实际需求,比如可能的应用场景如CAN通信或SD卡管理。同时,引用[3]提到CubeMX的配置可以适配其他STM32芯片,说明教程的通用性,但这里用户明确需要STM32H750VBT6的配置,所以重点在该型号。 需要注意用户可能对CubeMX界面不熟悉,因此需要指导如何导航到各个配置部分,例如Pinout、Clock Configuration、Project Manager等。此外,生成代码后的工程结构和使用方法也需要简要说明,比如使用Keil或IDE打开项目,如何编译下载等。 可能还需要提及常见的配置问题,比如时钟源选择是否正确,外设参数设置是否合理,以及如何根据具体需求调整配置。例如,CAN通信的波特率设置,或者SD卡的DMA配置,这些可能需要参考引用中的示例,如引用[4]中的FatFS配置。 另外,用户可能需要示例项目,可以建议访问ST官网或社区查找相关示例,或者按照步骤自己创建一个基础项目,比如配置LED和UART作为起点,再逐步添加复杂功能。同时,确保在回答中引用相关的引用内容,比如引用[1]的快速上手指南,引用[4]的FreeRTOS和FatFS配置步骤。 最后,生成相关问题时,要考虑用户可能的后续疑问,比如如何调试配置错误,优化代码大小,或者适配其他外设,这些问题可以帮助用户进一步深入学习。</think>以下是如何使用STM32CubeMX配置STM32H750VBT6芯片的详细步骤,结合示例项目和关键配置要点: --- ### **STM32H750VBT6配置教程** #### **1. 创建新工程** - 打开STM32CubeMX,点击`File > New Project` - 在芯片选择界面输入`STM32H750VBT6`,双击选中该型号[^2] #### **2. 基础配置** 1. **时钟源设置** - SYS > Debug:选择`Serial Wire`(启用SWD调试接口) - RCC > High Speed Clock (HSE):选择`Crystal/Ceramic Resonator`(若使用外部晶振) - 配置时钟树: $$ SYSCLK = 480\ \text{MHz},\quad APB1 = 120\ \text{MHz},\quad APB2 = 240\ \text{MHz} $$ *(使用PLL配置工具自动计算分频系数)* 2. **GPIO配置** - 在Pinout视图直接点击芯片引脚: - 配置LED引脚:`PA5`设为`GPIO_Output` - 配置UART1:`PA9(TX)`和`PA10(RX)`设为`USART1`模式 #### **3. 外设配置示例(以CAN通信为例)** 1. **启用CAN控制器** - Connectivity > CAN1:选择`Activated` - 参数设置: - `Nominal Bit Rate`:1 Mbps - `Time Quantum` = 1/(CAN Clock / Prescaler) $$ t_q = \frac{1}{120\ \text{MHz}/60} = 500\ \text{ns} $$ - 配置采样点:`BS1=13t_q`, `BS2=2t_q`[^1] 2. **生成代码** - Project Manager > Project:设置工程名称和路径(建议选择MDK-ARM或STM32CubeIDE) - Code Generator > 勾选`Generate peripheral initialization as a pair of .c/.h files` #### **4. 示例项目结构** ```c /* main.c片段 */ HAL_CAN_Start(&hcan1); // 启动CAN控制器 CAN_FilterTypeDef filter = { .FilterMode = CAN_FILTERMODE_IDMASK, .FilterScale = CAN_FILTERSCALE_32BIT }; HAL_CAN_ConfigFilter(&hcan1, &filter); // 配置过滤器[^1] ``` --- ### **扩展应用(SD卡+FatFS配置)** 1. **硬件接口** - 配置SDMMC1:`PC8(D0)`, `PC9(D1)`, `PC10(D2)`, `PC11(D3)`, `PC12(CLK)`, `PD2(CMD)` 2. **中间件配置** - 启用`FATFS`并选择`SD Card`模式 - 设置`SDIO时钟 ≤ 25 MHz`(兼容SD卡规范)[^4] --- ### **代码验证** ```python # 伪代码示例:通过CAN发送数据 msg = CAN_TxHeaderTypeDef() msg.StdId = 0x123 msg.IDE = CAN_ID_STD msg.RTR = CAN_RTR_DATA msg.DLC = 8 data = [0x11, 0x22, 0x33, 0x44, 0x55, 0x66, 0x77, 0x88] HAL_CAN_AddTxMessage(&hcan1, &msg, data, &tx_mailbox) ``` ---
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值