STM32F4标准外设固件库文件关系图
stm32标准外设库详解

stm32标准外设库使用详解分类:stm32 2011-07-17 10:57 2233人阅读评论(11) 收藏举报转载请注明出处:/lbl1234下载代码stm32标准外设库是stm32全系列芯片的外设驱动,有了它可以大大加速我们开发stm32。
首先从st公司的网站下载最新的stm32标准外设库,写本文时最新的版本是V3.5.0。
解压该zip文件,得到如下文件夹和文件STM32F10x_StdPeriph_Lib_V3.5.0\_htmrescLibrariesProjectUtilitiesRelease_Notes.htmlstm32f10x_stdperiph_lib_um.chm其中Libraries包含库的源代码,Project包含stm32各个外设的使用范例和一个工程模板,Utilities是使用st公司评估板的例子,stm32f10x_stdperiph_lib_um.chm教我们怎么用标准外设库。
工程目录结构既然准备使用32位单片机,应该是个不小项目,因此工程目录也应该做个规划。
这里我推荐一下我所使用的目录结构。
假设工程名字叫template,建一个名为template的文件夹,该目录下有个3个固定文件夹doc,src,include,doc用来存放工程相关的资料文件,src放源代码,在src下每个功能模块一个文件夹,include放各个模块都要使用的公共头文件。
output放编译输出文件,内含两个子文件夹obj和list。
template\docsrcincludeoutput\obj\list整理库代码由于Libraries下的CMSIS文件夹中很多代码是和编译器及芯片相关的,导致文件夹多且深度大,不利于工程维护,实际上一个项目往往是用固定的编译器和芯片,因此有必要对库进行整理。
在src下建立libstm32目录1. 把Libraries\STM32F10x_StdPeriph_Driver\下的内容拷贝到libstm32目录下2. 在libstm32目录下建立cmsis文件夹,把Libraries\CMSIS\CM3\CoreSupport\下的core_cm3.c,core_cm3.h;Libraries\CMSIS\CM3\DeviceSupport\ST\STM32F10x\下的stm32f10x.h,system_stm32f10x.c,system_stm32f10x.h拷贝到cmsis文件夹中。
STM32F4xx标准外设固件库

一、标准固件库简介本文下载的是STM32F4xx_DSP_StdPeriph_Lib_V1.5.0,其文件夹如下图所示:其中Project文件夹为各个开发环境(MDK-ARM、EWARM、TrueSTUDIO)的模板工程,Utilities文件夹为官方评估板的标准固件库应用例程,而真正的标准固件库在Libraries文件夹中。
在Libraries文件夹中:CMSIS文件夹主要包含于内核相关的文件;STM32F4xx_StdPeriph_Driver文件夹为STM32F4xx处理器外设相关的底层驱动。
以下为固件库移植时CMSIS文件夹中的重要源文件:core_cm4.h :内核功能的定义,比如NVIC相关寄存器的结构体和Systick配置。
在CMSIS/Include中core_cmFunc.h :内核核心功能接口头文件。
在CMSIS/Include中core_cmInstr.h :包含一些内核核心专用指令。
在CMSIS/Include中core_cmSimd.h :包含与编译器相关的处理。
在CMSIS/Include中stm32f4xx.h :包含了stm32f4的寄存器结构体的定义(类似于c51的reg52.h)。
在CMSIS\Device\ST\STM32F4xx\Include中system_stm32f4xx.h :system_stm32f4xx.c的头文件。
在CMSIS\Device\ST\STM32F4xx\Include中system_stm32f4xx.c :stm32f4的系统时钟配置。
在CMSIS\Device\ST\STM32F4xx\Source\Templates中startup_stm32f40_41xxx.s:启动文件:设定SP的初始值;设置PC的初始值;设置中断向量表的地址;配置时钟;设置堆栈;调用main。
这个启动文件先调用system_stm32f4xx.c里面的systeminit()在调用main()之前。
第三章 MDK软件入门 新建MDK工程 正点原子探索者STM32F4开发板 STM32F4开发指南

3.1 STM32 官方标准固件库简介
ST(意法半导体)为了方便用户开发程序, 提供了一套丰富的 STM32F4 固件库。 到底什么是 固件库?它与直接操作寄存器开发有什么区别和联系?很多初学用户很是费解,这一节,我们 将讲解 STM32 固件库相关的基础知识, 希望能够让大家对 STM32F4 固件库有一个初步的了解, 至于固件库的详细使用方法,我们会在后面的章节一一介绍。 固件库包光盘路径(是压缩包形式,大家解压即可) : \8,STM32 参考资料\STM32F4xx 固件库\stm32f4_dsp_stdperiph_lib.zip 同时,大家也可以到我们开源电子网 下载。 3.1.1 库开发与寄存器开发的关系 很多用户都是从学 51 单片机开发转而想进一步学习 STM32 开发,他们习惯了 51 单片机 的寄存器开发方式,突然一个 ST 官方库摆在面前会一头雾水,不知道从何下手。下面我们将 通过一个简单的例子来告诉 STM32 固件库到底是什么,和寄存器开发有什么关系?其实一句 话就可以概括:固件库就是函数的集合,固件库函数的作用是向下负责与寄存器直接打交道, 向上提供用户函数调用的接口(API) 。 在 51 的开发中我们常常的作法是直接操作寄存器,比如要控制某些 ቤተ መጻሕፍቲ ባይዱO 口的状态,我们直 接操作寄存器: P0=0x11; 而在 STM32 的开发中,我们同样可以操作寄存器: GPIOF->BSRRL=0x0001; //这里是针对 STM32F4 系列 这种方法当然可以,但是这种方法的劣势是你需要去掌握每个寄存器的用法,你才能正确使用 STM32,而对于 STM32 这种级别的 MCU,数百个寄存器记起来又是谈何容易。于是 ST(意法 半导体)推出了官方固件库, 固件库将这些寄存器底层操作都封装起来, 提供一整套接口 (API) 供开发者调用,大多数场合下,你不需要去知道操作的是哪个寄存器,你只需要知道调用哪些 函数即可。 比如上面的控制 BSRRL 寄存器实现电平控制,官方库封装了一个函数: void GPIO_SetBits(GPIO_TypeDef* GPIOx, uint16_t GPIO_Pin) { GPIOx->BSRRL = GPIO_Pin; }
STM32固件库详解

STM32固件库详解最近考试较多,教材编写暂停了一下,之前写了很多,只是每一章都感觉不是特别完整,最近把其中的部分内容贴出来一下,欢迎指正。
本文内容基于我对固件库的理解,按照便于理解的顺序进行整理介绍,部分参考了固件库的说明,但是也基本上重新表述并按照我理解的顺序进行重新编写。
我的目的很简单,很多人写教程只是告诉你怎么做,不会告诉你为什么这么做,我就尽量吧前因后果都说清楚,这是我的出发点,水平所限,难免有很大的局限性,具体不足欢迎指正。
1.1基于标准外设库的软件开发1.1.1 STM32 标准外设库概述STM32标准外设库之前的版本也称固件函数库或简称固件库,是一个固件函数包,它由程序、数据结构和宏组成,包括了微控制器所有外设的性能特征。
该函数库还包括每一个外设的驱动描述和应用实例,为开发者访问底层硬件提供了一个中间API,通过使用固件函数库,无需深入掌握底层硬件细节,开发者就可以轻松应用每一个外设。
因此,使用固态函数库可以大大减少用户的程序编写时间,进而降低开发成本。
每个外设驱动都由一组函数组成,这组函数覆盖了该外设所有功能。
每个器件的开发都由一个通用API (application programmi ng in terface 应用编程界面)驱动,API对该驱动程序的结构,函数和参数名称都进行了标准化。
ST公司2007年10月发布了 V1.0版本的固件库,MDK ARM3.22 之前的版本均支持该库。
2008年6月发布了 V2.0版的固件库,从2008年9月推出的MDK ARM3.23 版本至今均使用V2.0版本的固件库。
V3.0以后的版本相对之前的版本改动较大,本书使用目前较新的V3.4版本。
1.1.2使用标准外设库开发的优势简单的说,使用标准外设库进行开发最大的优势就在于可以使开发者不用深入了解底层硬件细节就可以灵活规范的使用每一个外设。
标准外设库覆盖了从 GPIO 到定时器,再到 CAN 、I2C、SPI、UART和ADC等等的所有标准外设。
stm32f4 标准库例程

stm32f4 标准库例程
STM32F4标准库例程是针对STMicroelectronics的STM32F4系列微控制器的软件库。
该库提供了一系列的API和函数来简化开发过程,包括GPIO、UART、SPI、I2C、ADC等常见外设的控制。
标准库例程分为两部分:库函数和示例代码。
库函数提供了一系列api和函数,可以直接在用户代码里调用来方便地控制外设。
示例代码则提供了一系列完整的项目范例,用户可以根据需要来学习和修改。
库函数包括各种外设的初始化、读写寄存器等操作。
例如,GPIO部分提供了GPIO初始化和控制函数、EXTI中断控制函数等;USART部分提供了串口初始化、发送、接收等函数;SPI部分提供了SPI初始化、配置、发送、接收等函数;ADC部分提供了ADC初始化、采样、转换等函数。
总之,这些库函数为开发者提供了许多方便和帮助。
示例代码则为用户提供了许多完整的项目实例,包括blinking LED实验、串口通信实验、SPI通信实验、I2C通信实验、ADC采样实验等。
用户可以通过学习这些示例代码,了解如何使用库函数控制外设。
总的来说,STM32F4标准库例程是STM32F4系列微控制器开发的重要工具,为用户提供了方便的API和函数,以及完整的示例代码,帮助用户更好的理解
和掌握STM32F4微控制器的开发。
STM32F4标准外设固件库文件关系图

STM32F4标准外设固件库⽂件关系图1、⽂件夹介绍⽹上下载STM32F4xx_DSP_StdPeriph_Lib_V1.4.0,其中Libraries⽂件夹下⾯就是固件库相关程序⽂件。
包括CMSIS和STM32F4xx_StdPeriph_Driver ⽂件夹CMSISCMSIS⽂件夹存放的是符合CMSIS规范的⼀些⽂件。
STM32F4xx_StdPeriph_Driver存放的是STM32F4xx标准外设固件库源码⽂件和对应的头⽂件。
1)main主程序中引⽤:stm32f4xx.h 头⽂件。
stm32f4xx.h 是 STM32F4 ⽚上外设访问层头⽂件。
⾮常重要。
2)stm32f4xx.h中引⽤:、system_stm32f4xx.h、core_cm4.h、stm32f4xx_conf.h3)system_stm32f4xx.h 是⽚上外设接⼊层系统头⽂件。
主要是申明设置系统及总线时钟相关的函数。
4)core_cm4.h ⽂件,这个就是 CMSIS 核⼼⽂件,提供进⼊ M4 内核接⼝,这是 ARM 公司提供,对所有CM4 内核的芯⽚都⼀样。
5)stm32f4xx_conf.h 是外设驱动配置⽂件。
包括misc.h、stm32f4xx_rcc.h和各种外设头⽂件stm32f4xx_ppp.h6)misc.c 和 misc.h 是定义中断优先级分组以及 Systick 定时器相关的函数。
7)stm32f3xx_rcc.c 和 stm32f4xx_rcc.h 是与 RCC 相关的⼀些操作函数,作⽤主要是⼀些时钟的配置和使能。
在任何⼀个 STM32 ⼯程 RCC 相关的源⽂件和头⽂件是必须添加的。
8)对于⽂件 stm32f4xx_ppp.c 和 stm32f4xx_ppp.h,这就是 stm32F4 标准外设固件库对应的源⽂件和头⽂件。
包括⼀些常⽤外设 GPIO,ADC,USART 等。
9)⽂件 Application.c 实际就是说是应⽤层代码。
stm32f4xx硬件系统资源

增强功能:更快的通信接口,更高采样率,带
FIFO的DMA控制器…
片上外设资源
外设资源
- 12位 ADC:0.41us转换/2.4Msps(7.2Msps在交替模式) - 全双工I2S - 高速USART,可达10.5Mbits/s 更快 更省电 - 定时/计数器 - 高速SPI,可达37.5Mbits/s
– IEEE1588, 以太网 MAC 10/100
最小系统
• • • • • 电源 复位 时钟 下载电路 启动模式
供电电源
VDD :数字电源( +1.8~3.6V )
VDDA:模拟电源( +1.8~3.6V )
VREF :外部参考电压(+1.8~VDDA) VBAT:备用电池电压(+1.65~3.6V)
存储器地址映射
DMA概念1
DMA:Direct Memory Access
作用:不需要经过CPU而进行数据传输,DMA控制器可以代替CPU驱 动产生数据访问的地址并执行数据的读出和写入操作。
DMA概念2
DMA传输三大要素
传输源:DMA控制器从传输源读出数据;
传输目标: DMA控制器将数据传输的目标; 触发信号:用于触发一次数据传输的动作,执行一个单位的传输
随机数产生器
基于连续模拟噪声的随机数产生器
哈希处理器
校验文件或信息的完整性
STM32F4 硬件资源
丰富的外设接口
STM32F4系列介绍
STM32F40x/41x框图
丰富的外设资源
常规外设:GPIO, UART, SPI, IIC ,CAN,RTC,
定时/计数器…..
新增功能:照相机接口、加密处理器,USB高速
第1讲 STM32F4体系结构

关系运算符 > 、 <、>=、<=、= =、!=
逻辑运算符 && 、 ||、 !
第1讲 STM32F4体系结构
C语言典型运算符
位运算符 &、^、|、<<(左移)、>>(右移)、~(按位取反)
赋值运算 =、运算符=(运算后赋值)
特殊运算符 [ ](数据下标)、.(成员选择 对象.成员表)、->(成员选
第1讲 STM32F4体系结构
嵌入式系统的设计方法
嵌入式系统设计有别于桌面软件设计的一个显著特点: 需要一个交叉编译和调试环境;源代码的编译工
作在宿主机上进行,编译好后需要下载到目标机上运行 宿主机和目标机通过串口、并口、网口或USB口建
立起通信连接,并传输调试命令和数据 嵌入式系统设计的基本原则:“物尽其用”硬件和软件都必
ARM体系的存储器格式 • 大端格式(Big Endian) 高字节存储在低地址中,低字节则存放在高地址中 • 小端格式(Little Endian) 高字节存储在高地址中,低字节则存放在低地址中
第1讲 STM32F4体系结构
Big Endian vs Little Endian
(0H)=0123H
第1讲 STM32F4体系结构
8条主控 总线
7条被控 总线
第1讲 STM32F4体系结构
八条主控总线:
• I总线(S0) :将 Cortex-M4 内核的指令总线连接到总线矩阵 • D总线(S1):将 Cortex-M4 内核的数据总线连接到总线矩阵 • S总线(S2):将 Cortex-M4 内核的系统总线连接到总线矩阵 • DMA存储器总线(S3,S4)将 DMA 存储器总线主接口连接到总线
- 1、下载文档前请自行甄别文档内容的完整性,平台不提供额外的编辑、内容补充、找答案等附加服务。
- 2、"仅部分预览"的文档,不可在线预览部分如存在完整性等问题,可反馈申请退款(可完整预览的文档不适用该条件!)。
- 3、如文档侵犯您的权益,请联系客服反馈,我们会尽快为您处理(人工客服工作时间:9:00-18:30)。
1、文件夹介绍
网上下载STM32F4xx_DSP_StdPeriph_Lib_V1.4.0,其中Libraries文件夹下面就是固件库相关程序文件。
包括CMSIS和STM32F4xx_StdPeriph_Driver 文件夹
CMSIS
CMSIS文件夹存放的是符合CMSIS规范的一些文件。
STM32F4xx_StdPeriph_Driver
存放的是STM32F4xx标准外设固件库源码文件和对应的头文件。
1)main主程序中引用:stm32f4xx.h 头文件。
stm32f4xx.h 是 STM32F4 片上外设访问层头文件。
非常重要。
2)stm32f4xx.h中引用:<stdint.h> 、system_stm32f4xx.h、core_cm4.h、
stm32f4xx_conf.h
3)system_stm32f4xx.h 是片上外设接入层系统头文件。
主要是申明设置系统
及总线时钟相关的函数。
4)core_cm4.h 文件,这个就是 CMSIS 核心文件,提供进入 M4 内核接口,这
是 ARM 公司提供,对所有CM4 内核的芯片都一样。
5)stm32f4xx_conf.h 是外设驱动配置文件。
包括misc.h、stm32f4xx_rcc.h
和各种外设头文件stm32f4xx_ppp.h
6)misc.c 和 misc.h 是定义中断优先级分组以及 Systick 定时器相关的函
数。
7)stm32f3xx_rcc.c 和 stm32f4xx_rcc.h 是与 RCC 相关的一些操作函数,作
用主要是一些时钟的配置和使能。
在任何一个 STM32 工程 RCC 相关的源文件和头文件是必须添加的。
8)对于文件 stm32f4xx_ppp.c 和 stm32f4xx_ppp.h,这就是 stm32F4 标准外
设固件库对应的源文件和头文件。
包括一些常用外设 GPIO,ADC,USART 等。
9)文件 Application.c 实际就是说是应用层代码。
这个文件名称可以任意取
了。
我们工程中,直接取名为 main.c。
10)一个完整的 STM32F4 的工程中除了上面的程序文件外,还需要启动文件。
对于不同型号的 STM32F4 系列对应的启动文件也不一样。
我们的开发板是STM32F407 系列所以我们选择的启动文件为startup_stm32f40_41xxx.s。
一个完整的 STM32F4 的工程模板。