1.在STM32的数据手册中引脚定义中的I/O structureΦ如果是FT的话,说明该引脚兼容5V;
2.IO口一般都有多个功能可以通过寄存器的设置来选择其IO口的功能,F1还有重映射的概念F4没有;
3.IO口分为两種情况:一个是完全独立的IO(不能有任何外设连接的IO,一般比较少)(如ADC采集);一种是允许IO口挂其他外设但是必须可以单独做输入、輸出使用。
4.基本外设:GPIO输入输出外部中断,定时器串口。这四个基本外设任何一款MCU都有;然后是一些高级的通信外设如SPI,IIC,WDG,FSMC,ADC/DAC,SDIO等;再是一些高级功能的应用了如UCOS,EMWIN等;
5.Cortex-M4采用ARMv7-ME架构,此架构定义了三大分工明确的系列:“A”系列:面向尖端的基于虚拟内存的操作系统和用户应用;“R”系列:针对实时系统;“M”系列:对微控制器
7.STM32的大部分引脚除了当GPIO使用外,还可以复用为外设功能引脚(比如串口定时器,IIC等)
8.GPIO的工作方式:4种输入模式:输入浮空,输入上拉输入下拉,模拟输入;4种输出模式:开漏输出(带上拉或者下拉)开漏复用功能(帶上拉或者下拉),推挽式输出(带上拉或者下拉)推挽式复用功能(带上拉或者下拉);具体区别可以参考STM32八种IO口模式区别.pdf;4种最大輸出速度:2MHZ\25MHZ\50MHZ\100MHZ.
9.推挽输出可以输出强高低电平,适合连接数字器件;开漏输出只可以输出强低电平高电平得靠外部电阻拉高。适合做电流型嘚驱动
10.每组GPIO端口的寄存器包括如下图:
15.端口输入数据寄存器(GPIOx_IDR)如下:
17.所有的IO口都可以用于中断输入(stm32);
经常在网上、群里看到很多人问關于STM32的FATFS文件系统移植的问题刚好自己最近也在调试这个程序,为了让大家少走弯路我把我的调试过程和方法也贡献给大家。
Module是一种完铨免费开源的FAT文件系统模块专门为小型的嵌入式系统而设计。它完全用标准C语言编写所以具有良好的硬件平台独立性,可以移植到8051、PIC、***R、SH、Z80、H8、ARM等系列单片机上而只需做简单的修改它支持FATl2、FATl6和FAT32,支持多个存储媒介;有独立的缓冲区可以对多个文件进行读/写,并特別对8位单片机和16位单片机做了优化
1、FATFS源代码的获取,可以到官网下载: 最新版本是R0.09版本我们就移植这个版本的。
2、解压文件会得到两個文件夹一个是doc文件夹,这里是FATFS的一些使用文档和说明以后在文件编程的时候可以查看该文档。另一个是src文件夹里面就是我们所要嘚源文件。
3、建立一个STM32的工程为方便调试,我们应重载printf()底层函数实现串口打印输出可以参考已经建立好的printf()打印输出工程:
FATFS状态获取函數:
FATFS底层读数据函数:
FATFS底层写数据函数:
FATFS磁盘控制函数:
注意:成功打开文件后一定要调用f_close()函数,否则数据无法写入SD卡中
重新编译会发現有如图3的错误。原因是要支持中文文件名需要包含另外一个文件cc936.c该文件在FATFS文件系统源码的.\src\option目录下,将它添加到工程文件目录FATFS中如图4昰我们添加文件后的工程文件结构,再次编译就通过了如图5所示。我们发现增加这个文件后代码量增加了很多主要原因是这个文件是峩们支持中文所需要的中文编码文件。
同时将ccsbcs.c添加到工程目录中这样就可以减小很多大代码量。将程序下载板子后再次运行结果如图7所礻可以看到可以支持英文的长文件名。
硬盘只有经过物理格式化分区,逻辑格式化后才能使用在进行分区时,FDISK 会在硬盘的0柱面0磁头1扇区建一个64字节的分区表在分表的前面是主引导记录 (MRB),后面是两个芓节的有效标志55HAAH,(H表示16进制)此扇区被称为主 引导扇区,也是病毒最爱侵袭的地方它由主引导记录+分区表+有效标志组成。
分区表對于系统自举十分重要它规定着系统有几个分区;每个分区的起始及终止 扇区,大小以及是否为活动分区等重要信息分区表由4个表项組成,每个表项16个字 节各字节含义如下表1:
——————————————————————————————
——————————————————————————————
第8~11字节 相对扇区号,该分区起始的相对逻辑扇区号
第12~15字节 该分区所用扇区数,高位在后低位在前
——————————————————————————————
2. 磁头的各个面称为磁头,软盘只有两个磁头而硬盘往往有哆个。
3. 高位在后低位在前是一种存储数字方式,读出时应对其进行调整
当一个磁盘Format后,在其逻辑0扇区(即BOOT扇区)后面的几个扇区中存 茬着一个重要的数据表—文件分配(FAT)文件分配表一式两份,占据扇 区的多小凭磁盘类型大小而定顾名思义,文件分配表是用来表示磁盘问件 的空分配信息的它不对引导区,文件目录的信息进行表示也不真正存储 文件内容。
我们知道磁盘是由一个一个扇区组成的若干个扇区合为一个簇 ,文件存取 是以簇为单位的哪怕这个文件只有1个字节。每个簇在文件分配表中都有对应 的表项簇号即为表项号,每个表项占1.5个字节(磁盘空间在10MB以下)或2个 字节(磁盘空间在10MB以上)为了方便起见,以后所说的表项都是指2个字节的
不要把表项内嘚数字误认为表示当前簇号,而应是该文件的下一个簇的簇号
. 高字节在后,低字节在前是一种存储数字方式读出时应对其进行调整。 昰如两字节12H34H,应调整为3412H
文件分配表与文件目录(FDT)相配合,可以统一管理整个磁盘的文件它告诉 系统磁盘上哪些簇是坏的或已被使鼡,哪些簇可以用并存储每个文件所使用的簇 号。它是文件的“总调度师”
当DOS写文件时,首先在文件目录中检查是否有相同文件名若无则使用一个文 件目录表项,然后依次检测FAT中的每个表项对应的簇中同时将该簇号写入文件目 录表项相的26-27字节,如文件长度不止一簇则继续向后寻找可用簇,找到后将其 簇号写入上一次找到的表项中如此直到文件结束,在最后一簇的表项里填上FFF8H 形成单向链表。
DOS删除文件时只是把文件目录表中的该文件的表项第0个字节改为E5H表此项已 被删除,并在文件分配表中把该文件占用的各簇的表项清0并释放涳间。其文件的 内容仍然在盘上并没有被真正删除,这就是undelete.exe,unerase.exe等一类恢复 删除工具能起作用的原因
文件分配表在系统中的地位十分重要,用户最好不要去修改它以免误操作带来 严重的后果。
——————————————————————————————————
——————————————————————————————————
第1~2字节(表项号1) 表示第一簇状态因第一簇被系统占据,故此两字节