STM32F407之TF卡HAL库的使用

发布者:独行侠客最新更新时间:2018-10-08 来源: eefocus关键字:STM32F407  TF卡  HAL库 手机看文章 扫描二维码
随时随地手机看文章

一、初始化SD卡

需要定义两个类型句柄,SD卡句柄SD_InitTypeDef类型和SD卡信息句柄HAL_SD_CardInfoTypeDef类型,然后初始化SD卡句柄参数,其中首先必须初始化SD卡数据宽度1Bit,然后初始化完其他参数后,通过HAL_SD_Init()函数吃实话,这里有两个参数,分别为上面的两个参数,会将SD卡信息储存在HAL_SD_CardInfoTypeDef类型中,然后注意,需要重新使能SD卡数据宽度,HAL_SD_WideBusOperation_Config(),两个参数,一个句柄,一个宽度。同其他初始化一样,调用HAL_SD_Init时会调用回调函数,回调函数中,需要使能SD和GPIO的时钟,然后初始化GPIO复用。

这里需要提一下,F4上的SDIO和F7上的SDMMC两个接口,经过网上查询,并没有一个确切的说法,大概的说法是这两个接口是包含关系,F7上既有SDMMC也有SDIO接口。其实两个用法是一样的。

二、SD卡读写

读写SD卡需要几点说明,1、读写块大小必须是512字节的,在HAL_SD_ReadBlocks函数说明中注释,block size必须是512字节大小。2、读写SD卡的时候必须要关闭所有中断,本人是学习正点原子的开发板的例程,他们中例程关闭和打开中断是在sys文件中的,INTX_DISABEL和INTX_ENABLE。3、读写地址定义可以是普通地址,也可以是扇区地址,这要看你自己的读写程序了。4、字节对齐问题,读写SD卡需要地址4字节对齐,因此在读写缓冲区buf中药先判断是不是地址对齐,(u32)buf%4,若不对齐,需要先将数据写到对齐的缓冲区内,定义一个__align(4) u8 SD_BUF[512]的数组中,然后再将数据从SD_BUF中写到buf中。折旧完成了SD卡数据的基本读写操作了,当然,如果要操作文件,还要移植FATFS文件系统。

注:SD卡读写函数中,读地址的设置,是设置扇区地址还是普通的读写地址,因为在FATFS文件系统中,要配置disk_read函数,该函数的参数是扇区地址,因此为了和FATFS参数一直,因此读写SD卡函数地址最好设置为扇区地址。


关键字:STM32F407  TF卡  HAL库 引用地址:STM32F407之TF卡HAL库的使用

上一篇:STM32F103RCT6之FLASH读写操作
下一篇:有这10个关键点,在ARM下高效C编程没问题!

推荐阅读最新更新时间:2024-03-16 16:15

stm32F4XX之窗口看门狗 HAL库
首先讲一下独立看门狗和窗口看门狗之间的区别。 独立看门狗Iwdg——独立于系统之外,因为有独立时钟,一般是外部低速时钟。主要用于监视硬件错误。 窗口看门狗wwdg——系统内部的故障探测器,采用内部RCC时钟,时钟与系统相同。如果系统时钟不走了,这个狗也就失去作用了。主要用于监视软件错误 1)独立看门狗没有中断,窗口看门狗有中断 2)独立看门狗有硬件软件之分,窗口看门狗只能软件控制 3)独立看门狗只有下限,窗口看门狗又下限和上限 4)独立看门狗是12位递减的。窗口看门狗是7位递减的 5)独立看门狗是用的内部的大约40KHZ RC振荡器(不受系统时钟限制,即使系统时钟坏了也能工作),窗口看门狗是用的系统时钟
[单片机]
stm32F4XX之窗口看门狗 <font color='red'>HAL库</font>
【STM32Cube_05】使用EXIT中断检测按键
1. 准备工作 硬件准备 首先需要准备一个开发板,这里我准备的是STM32L4的开发板(BearPi): 软件准备 需要安装好Keil - MDK及芯片对应的包,以便编译和下载生成的代码。 Keil MDK和串口助手Serial Port Utility 的安装包都可以在文末关注公众号获取,回复关键字获取相应的安装包: 2.生成MDK工程 选择芯片型号 打开STM32CubeMX,打开MCU选择器: 搜索并选中芯片STM32L431RCT6: 配置时钟源 如果选择使用外部高速时钟(HSE),则需要在System Core中配置RCC; 如果使用默认内部时钟(HSI),这一步可以略过; 这里我都使用外部时
[单片机]
【STM32Cube_05】使用EXIT中断检测按键
stm32F407-RDA5820N模块的使用
RDA5820N是一款广播FM接受或发射模块,支持50M~115M频段FM和RDS/RBDS接收和发射,支持电源范围为1.8-5.5V。更多详细介绍请看数据手册。 RDA5820N模块是在做2018年电赛无线话筒扩音系统时使用的发射模块,接收模块用的使TEA5767,当然RDA5820N也是可以的,但是当时考虑到价格,所以用了TEA5767,本篇文章主要分享RDA5820N的.c和.h文件。 rda5820.h #ifndef __RDA5820_H #define __RDA5820_H #include sys.h #include myiic.h #define RDA5820_R00 0X0
[单片机]
stm32F407-RDA5820N模块的使用
【STM32】HAL库 STM32CubeMX教程十二---IIC(读取AT24C02 )
前言: 本系列教程将HAL库与STM32CubeMX结合在一起讲解,使您可以更快速的学会各个模块的使用 在之前的标准库中,STM32的硬件IIC非常复杂,更重要的是它并不稳定,所以都不推荐使用。 但是在我们的HAL库中,对硬件IIC做了全新的优化,使得之前软件IIC几百行代码,在HAL库中,只需要寥寥几行就可以完成 那么这篇文章将带你去感受下它的优异之处 这可能是目前关于STM32CubeMX的硬件iic 讲的最全面和详细的一篇文章之一了 所用工具: 1、芯片: STM32F103ZET6 2、STM32CubeMx软件 3、IDE: MDK-Keil软件 4、STM32F1xx/STM32F4xxHAL库 5、II
[单片机]
【STM32】<font color='red'>HAL库</font> STM32CubeMX教程十二---IIC(读取AT24C02 )
STM32CubeMX配置RTC——基于(STM32G070+STM32CubeMX+HAL库+RTC)
实验目的: 通过STM32CubeMX进行简单配置生成HAL库实现内部晶振RTC。 一、STM32CubeMX配置如下: 1.时钟树配置: 因为板子没有外部RTC晶振,所以只能使用内部32KHz晶振,时钟树配置如下: 2.RTC配置: (1)关于Asynchronous Predivider value 和 Synchronous Predivider value填写多少,请看下面: 因为内部晶振是32KHz,所以毫无疑问应该选择LSI=32KHz即: Asynchronous Predivider value :127 Synchronous Predivider value :249 (2)关于Hou
[单片机]
STM32CubeMX配置RTC——基于(STM32G070+STM32CubeMX+<font color='red'>HAL库</font>+RTC)
【STM32】HAL库-GPIO及位段
GPIO模式 输入浮空 输入上拉 输入下拉 模拟输入 推挽输出 开漏输出 推挽复用输出 开漏复用输出 一篇介绍推挽与开漏输出的区别的文章 链接 I/O端口位的基本结构 配置表 输入浮空/上拉/下拉配置 输出缓冲器被禁止 施密特触发输入被激活 根据输入配置(上拉,下拉或浮动)的不同,弱上拉和下拉电阻被连接 出现在I/O脚上的数据在每个APB2时钟被采样到输入数据寄存器 对输入数据寄存器的读访问可得到I/O状态 输出配置 输出缓冲器被激活 开漏模式:输出寄存器上的’0’激活N-MOS,而输出寄存器上的’1’将端口置于高阻状态(P-MOS从不被激活)。 推挽模式:输出寄存器上的’0’激活N-MOS,而输出寄存器上的’1’
[单片机]
【STM32】<font color='red'>HAL库</font>-GPIO及位段
第37章 STM32F429的FMC总线基础知识和HAL库API
37.1 初学者重要提示 F1和F407使用的是FSMC(Flexible static memory controller),跟F429和H7带的FMC区别是不支持SDRAM,也就是差在字母static,使用FMC可以动态刷新SDRAM来保持电量。 FMC控制SRAM型存储器和NAND型存储器是异步控制,而控制SDRAM属于同步控制。同步和异步的区别是同步方式需要一个专门的时钟控制引脚。 FMC配置中未用到引脚均可以继续用作通用I/O模式或者其它复用功能,仅需不配置FMC复用即可。 STM32F429驱动32位SDRAM的写速度狂飙300MB/S,读速度90MB/S。http://www.armbbs.cn/foru
[单片机]
第37章 STM32F429的FMC总线基础知识和<font color='red'>HAL库</font>API
STM32F407 外扩SRAM
字节控制功能。支持高/低字节控制。 看看实现 IS62WV51216 的访问,需要对 FSMC进行哪些配置。 这里就做一个概括性的讲解。步骤如下: 1)使能 FSMC 时钟,并配置 FSMC 相关的 IO 及其时钟使能。 要使用 FSMC,当然首先得开启其时钟。然后需要把 FSMC_D0~15,FSMCA0~18 等相关IO 口,全部配置为复用输出,并使能各 IO 组的时钟。 使能 FSMC 时钟的方法: RCC_AHBPeriphClockCmd(RCC_AHBPeriph_FSMC,ENABLE); 对于其他 IO 口设置的方法前面讲解很详细,这里不做过多的讲解。 2)设置 FSMC BANK1 区域 3。
[单片机]
<font color='red'>STM32F407</font> 外扩SRAM
小广播
添点儿料...
无论热点新闻、行业分析、技术干货……
设计资源 培训 开发板 精华推荐

最新单片机文章
何立民专栏 单片机及嵌入式宝典

北京航空航天大学教授,20余年来致力于单片机与嵌入式系统推广工作。

换一换 更多 相关热搜器件
电子工程世界版权所有 京B2-20211791 京ICP备10001474号-1 电信业务审批[2006]字第258号函 京公网安备 11010802033920号 Copyright © 2005-2024 EEWORLD.com.cn, Inc. All rights reserved