STM32固件库使用手册_v3.5版本
基于ST官方V3.5固件库的STM32新建工程心得
基于ST官方V3.5固件库的STM32新建工程心得之前笔记有寄存器版本的新建工程步骤,这里介绍下基于ST官方V3.5固件库的STM32新建工程,和寄存器新建工程类似,在其基础上添加库文件。
1、WINSOWS环境下新建工程文件夹test →inc 存放自己的库文件src 存放自己的.C文件out 存放自己的输出文件txt 存放技术文档Libraries 拷贝的官方库文件到自己的工程文件夹下将打包文件夹下system目录下的inc和src文件夹中的3个文件或复制inc 和src到test文件夹下2、打开keil,新建一个工程将工程保存到自己新建的工程文件夹test的根目录选择芯片型号在弹出的是否自动导入启动代码的选项卡中选择否3、点击manage project items图标进行工程组管理test →CMSIS (Cortex微控制器软件接口标准)放启动代码内核文件STD_DRIVER (驱动程序放封装好的函数)SYSTEMMAINSRC在CMSIS工程组下添加以下文件:Libraries/CMSIS/CM3/Core Support/core_cm3.cLibraries/CMSIS/CM3/Devicesupport/ST/STM32F10x/system_stm32f10x.cLibraries/CMSIS/CM3/Devicesupport/ST/STM32F10x/startu p/arm/startup_st m32f10x_hd.s(.s文件可能在目录下被过滤,选择查看.s文件才能找到)至此,管理组CMSIS目录下共有3个文件在STD_DRIVER工程组目录下添加以下文件:Libraries/STM32F10x_StdPeriph_Driver/所有.c文件(这里暂时全部添加,以后可以用到哪个添加哪个)工程组设置完毕,点击确定保存4、从标准库文件夹STM32F10x_StdPeriph_Lib_V3.5.0/Project/STM32F10x_StdPeriph_Template/stm32f10x_conf.h 拷贝到新建工程文件夹test的inc文件夹下stm32f10x_it.c 拷贝到新建工程文件夹test的src文件夹下stm32f10x_it.h 拷贝到新建工程文件夹test的inc文件夹下5、点击Opetions for Target图标进行工程配置Device选项卡是芯片,新建工程时候已经选择Target选项卡晶振8.0MHzOutput选项卡Select Folder for Objects选择输出文件路径为创建文件夹test目录下的out,勾选Create HEX File,生成HEX烧写文件Listing选项卡Select Folder for Listing选择列表文件输出路径为test的outC/C++选项卡这里要添加两个宏:STM32F10X_HD,USE_STDPERIPH_DRIVER,指定芯片为大容量产品,使用ST官方的标准固件库Include Paths添加指定所有库文件路径,这里包含了Libraries文件夹下的标准库文件和test文件夹下自己定义的库文件有4个路径:test/inctest\Libraries\CMSIS\CM3\CoreSupporttest\Libraries\CMSIS\CM3\DeviceSupport\ST\STM32F10xtest\Libraries\STM32F10x_StdPeriph_Driver\incDebug选项卡选择使用Jlink仿真调试Utilities选项卡去掉Use debug Driver选项前的勾选,然后选择Jlink在setting中选择FLASH,我们的芯片是大容量512K,可以选择勾选Reset and Run,烧写玩程序自动复位并运行。
固件库v3.5使用
固件库v3.5使用首先下载固件库STM32-v3.50移植环境:Keil uVision41.固件库目录介绍。
_htmresc:ST(意法半导体)Logo,包含两张图片。
Libraries:外围设备的驱动文件(STM32F10x_StdPeriph_Driver)和重要的系统文件(CMSIS)。
两个文件夹的内容稍后介绍。
Project:大量的外设例程和各个软件的工程模版,开发的时候可以在原来的基础上加以修改。
其中Kei 模版为MDK-ARMUtilities:评估板相关文件。
stm32f10x_stdperiph_lib_um.chm:由固件库中的注释生成的帮助文档。
2.固件库移植。
(1)建立一个工程文件夹,里面建立相应的目录用来区分文件的类别。
例如:D:\TestLibraries、User、StartUp、CMSIS、Project(2)将固件库中的文件拷贝到上面的相应目录下。
1)直接拷贝固件库中的Libraries放在Test根目录下,并且将CMSIS中剪切出来直接放在Test目录下,直接成为一个文件夹。
并将STM32F10x_StdPeriph_Driver目录下的src和inc文件夹剪切出来放到Libraries目录下。
2)在CMSIS中,将CMSIS\CM3\DeviceSupport\ST\STM32F10x\startup中为启动文件,将其剪切出来放到Test根目录下,单独成文一个文件夹,并根据开发板的型号选择相应的启动文件,确定无误后该文件夹中的其他启动文件就可以直接删除了。
其他的文件夹的其他文件是重要的系统文件,不要进行移动和修改。
例如:本历程使用的是startup_stm32f10x_hd.sSTM32F10x_LD:STM32小容量产品STM32F10x_MD:STM32中容量产品STM32F10x_HD:STM32大容量产品3)User中放置main()函数,里面加上#include “stm32f10x.h”,另外从stm32\STM32F10x_StdPeriph_Lib_V3.5.0\Project\STM32F10x_StdPeriph_Template中拷贝stm32f10x_conf.h、stm32f10x_it.c、stm32f10x_it.h、system_stm32f10x.c四个文件。
STM32固件库v3.5变更指南
STM32 固件库中文使用手册只到 V2.0,其后未再更新。本文就 V3.5 对 V2.0 的常用部件 变更做简要说明。
பைடு நூலகம்
无不同
ADC_
无不同
BKP_
DMA_
void DMA_SetCurrDataCounter(DMA_Channel_TypeDef* DataNumber); V3.5 多出 向通道 x 的 CNDTR 寄存器写入数据传输数量
#endif /* STM32F10X_CL */
#ifdef STM32F10X_CL void RCC_AHBPeriphResetCmd(uint32_t RCC_AHBPeriph, FunctionalState NewState); #endif /* STM32F10X_CL */
无不同
void TIM_SetIC1Prescaler(TIM_TypeDef* TIMx, uint16_t TIM_ICPSC); V3.5 void TIM_SetIC2Prescaler(TIM_TypeDef* TIMx, uint16_t TIM_ICPSC); V3.5 void TIM_SetIC3Prescaler(TIM_TypeDef* TIMx, uint16_t TIM_ICPSC); V3.5 void TIM_SetIC4Prescaler(TIM_TypeDef* TIMx, uint16_t TIM_ICPSC); V3.5 void TIM1_SetIC1Prescaler(u16 TIM1_IC1Prescaler); V2.0 void TIM1_SetIC2Prescaler(u16 TIM1_IC2Prescaler); V2.0 void TIM1_SetIC3Prescaler(u16 TIM1_IC3Prescaler); V2.0 void TIM1_SetIC4Prescaler(u16 TIM1_IC4Prescaler); V2.0 功能:设置输入捕获预分频值(TIM_ICPSC_DIV1、TIM_ICPSC_DIV2、TIM_ICPSC_DIV4、 TIM_ICPSC_DIV8),分别为输入每 1、2、4 和 8 个边沿触发一次捕获
STM32固件库V3.5.0的CMSIS文件解析
STM32固件库V3.5.0的CMSIS文件解析1.首先选择启动文件:根据自己所用芯片的型号,选择正确的启动文件。
例如选择STM32F107系列的处理器,我们就选择startup_stm32f10x_hd.s。
在这个文件里首先要定义自己堆栈的大小,根据自己的需要确定。
文件中已经定义好了中断向量的位置及堆栈的初始化操作。
/* Reset handler*/Reset_Handler PROCEXPORT Reset_Handler [WEAK]IMPORT __mainIMPORT SystemInitLDR R0, =SystemInitBLX R0LDR R0, =__mainBX R0ENDP通过上面的代码可以看到先执行SystemInit()函数在进入main()函数。
SystemInit()函数在文件system_stm32f10x.c中有定义。
2.stm32f10x.h:这个头文件包含了STM32的大部份定义:①定义了芯片的类型,例如:#define STM32F10X_CL②定义是否包含标准外设库,#defined USE_STDPERIPH_DRIVER③定义外部振荡器频率,#defined HSE_V ALUE上面的三个定义,最好在编译器选项中定义好,这样就不用修改stm32f10x.h文件,最好不要修改这个文件。
④采用枚举的方式定义中断号。
⑤包含core_cm3.h,system_stm32f10x.h。
#include "core_cm3.h"#include "system_stm32f10x.h"#include <stdint.h>⑥定义数据类型,例如:typedef uint32_t u32此外还定义了FlagStatus,ITStatus及ErrorStatus等。
⑦定义外设结构体,地址及用到的常量。
⑧包含stm32f10x_conf.h来配置外设。
STM32 3.5库文件中文说明
STM32库文件1.1.1 STM32标准外设库概述STM32标准外设库之前的版本也称固件函数库或简称固件库,是一个固件函数包,它由程序、数据结构和宏组成,包括了微控制器所有外设的性能特征。
该函数库还包括每一个外设的驱动描述和应用实例,为开发者访问底层硬件提供了一个中间API,通过使用固件函数库,无需深入掌握底层硬件细节,开发者就可以轻松应用每一个外设。
因此,使用固态函数库可以大大减少用户的程序编写时间,进而降低开发成本。
每个外设驱动都由一组函数组成,这组函数覆盖了该外设所有功能。
每个器件的开发都由一个通用API (application programming interface 应用编程界面)驱动,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等等的所有标准外设。
对应的C源代码只是用了最基本的C编程的知识,所有代码经过严格测试,易于理解和使用,并且配有完整的文档,非常方便进行二次开发和应用。
1.1.3 STM32F10XXX标准外设库结构与文件描述1. 标准外设库的文件结构在上一小节中已经介绍了使用标准外设库的开发的优势,因此对标准外设库的熟悉程度直接影响到程序的编写,下面让我们来认识一下STM32F10XXX的标准外设库。
STM32F10XXX的标准外设库经历众多的更新目前已经更新到最新的3.5版本,开发环境中自带的标准外设库为2.0.3版本,本书中以比较稳定而且较新的V3.4版本为基础介绍标准外设库的结构。
【自写】如何使用STM32_V3.5版本固件库在Keil4下建立工程模板
如何使用STM32_V3.5版本固件库在Keil4下建立工程模板By 呼延靖国准备工作如下:1.下载STM32F10x_StdPeriph_Lib_V3.5.0固件库。
2.下载并安装好Keil uVision V4.10(MDK4)开始:1.首先解压STM32F10x_StdPeriph_Lib_V3.5.0固件库。
PS:保留一个备份,你懂的。
解压得到如图1所示的几个文件夹。
其中_htmresc文件夹:里面是ST的Logo图片,没有多大用,可以删除。
Libraries文件夹:是比较重要的文件包含STM32的系统文件和大量头文件,即库文件。
Project文件夹:里面为STM32F10x的例程和工程模板。
Keil对应的就是 MDK-ARM 文件下的工程模板。
也可以利用这个工程模板为原型建立自己的工程模板本文不用此法。
Utilities文件夹:里面有一些实用程序,也没多大用,可删除。
Release_Notes.html:版本注视,可删除。
stm32f10x_stdperiph_lib_um.chm:帮助文件,你懂的。
2.为了项目程序中的各部分条理清晰,我们建议工程文件夹时对其子目录子下归类建立子文件夹,例建立一个工程文件夹My Project,在其下在创建五个子文件夹如图2所示:其中:CMSIS文件夹:此文件夹从STM32F10x_StdPeriph_Lib_V3.5.0固件库中的CMSIS文件夹直接复制过来。
Libraries文件夹:此文件夹从STM32F10x_StdPeriph_Lib_V3.5.0固件库中的Libraries文件夹复制过来。
只保留当中的inc和src文件夹。
即只包含头文件。
Startup文件夹:此文件夹从CMSIS\CM3\DeviceSupport\ST\STM32F10x\Startup目录下直接将Startup文件剪切出来。
其中放置的是启动代码,具体的代码根据所用芯片的容量选择,我们用的STM32F103C8为中等容量芯片,故选择其中的startup_stm32f10x_md.s启动代码,其他不用的可以删除User文件夹:User文件夹为用户的应用程序,其中包括main.c,stm32f10x_conf.h,stm32f10x_it.c,stm32f10x_it.h四个文件,这四个文件可从V3.5.0固件库Project\STM32F10x_StdPeriph_Template目录下复制过来,当然main.c文件中的内容可删除。
关于STM32F103 V3.5.0固件库stm32f10x_conf.h文件
关于STM32F103 V3.5.0 固件库stm32f10x_conf.h 文件最近项目使用STM32,又重新熟悉了一下STM32 的工程建立与程序设计,总结了一下,发现了之前没有发现的技巧与设置。
关于STM32F103 的V3.5.0固件库,使用起来,挺方便,移植性也不错,当然,如果使用Keil uVesion4 开始的话,首先需要设置好工作环境,才可以正常的编译。
为什么会有:main.c里面怎么来的stm32f10x_conf.h 文件?我搜索了一下代码,发现来自:主头文件#include “stm32f10x.h”若是使用ST 公司为STM32 开发的固件库,就会包括头文件:stm32f10x_conf.h。
打开stm32f10x_conf.h 文件一看,原来,只有:#include “stm32f10x.h”还不够,如果要使用外设什么的,还要在这里打开配置开关,不用的外设可以不加入头文件,看来设计的挺巧妙的。
这样使用外设库时,只要配置好就行了,在main.c 里只使用一个:#include “stm32f10x.h”就可以了。
看来如果不配置好stm32f10x_conf.h,当使用外设如ADC TIM USART 时,根据无法编译通过。
因为没有在项目里加入头文件调用,这里若全不选,根本不能调用固件外设库,即使你把固件库文件加入了工程里。
当然,你可以在main.c 里面全部加入需要的头文件来解决,不过我觉得配置stm32f10x_conf.h 简单方便,有组织。
在这里,加入了需要使用的固件库外设文件,但还不够,还需要设置如下:还加入头文件路径:根据使用的外设固件库配置一下:stm32f10x_conf.h,如果使用systick 系统滴答定时器等,只要在stm32f10x_conf.h 里,取消#include “misc.h”前面的注释,即包含这个misc.h 文件即可,否则,滴答定时器不工作。
通过STM32固件库V3.5.0来建立一个简单的工程模版
STM32F10x_StdPeriph_Lib_V3.5.0\Project\STM32F10x_Stdperiph_Examples\GP IO\IOToggle 目录下 main.c,stm32f10x_conf.h,stm32f10x_it.h,stm32f10x_it.c 四 个文件复制到 User 目录下。 至此,文件的操作结束。 重新点击,现在我们要向各个文件组中添加文件。 首先是 User 文件组,点击 Add Files,然后添加 User 文件夹下的 3 个 C 文件,如下图所示。
在这里,选择否(N),等会我们会添加 STM32 固件库中的启动文件。
接下来,我们要建立几个文件组,用来存放不同的源文件,让整个工 程目录结构清晰,点击中的后如下图所示 点击中的可建立一个文件组,可以删除分组,下面我们将建立 User,StdPeriph_Drive,CMSIS,MDK-ARM 四个文件组,User 用来存放与 用户有关的文件,StdPeriph_Drive 用来存放库函数中的外设驱动文件, CMSIS 用来放于 Cortex_M3 内核有关的文件,MDK-ARM 用来存放启动文件, 文件组建立好后,如下图所示。 点击 OK,我们可看到下图所示)与 Template 文件夹 中的文件进行操作。 将固件库文件夹中的 Libraries 文件夹复制到工程目录下(即刚才建 立的 Template 文件夹下),并在 Template 下建立 User 与 Output 两个文件夹, User 用来放与用户代码有关的文件,Output 用来存放编译后产生的中间文件。
通过 STM32 固件库 V3.5.0 来建立一个简单的工程模
版
首先,打开 Keil,选择 Project-》New uVision Project,选择合适的文 件夹,输入工程名后,点击保存,建立工程。 如下图,在 Template 文件夹下建立工程名为 stm32_demo 的工程。 然后我们选择器件,以 STM32F103RB 为例(STM32 其他系列可类 推),在 STMicroelectronics 栏中选择 STM32F103RB,如下图,在图右侧我 们可看到关于芯片的描述。 点击确定后弹出如下的对话框,问需不需要添加启动文件(此启动文 件为 MDK 自带的),
Stm32f10x固件库3.5使用指南
stm32f10x_rtc.c stm32f10x_sdio.c stm32f10x_spi.c
RTC 模块的固件函数 SD 接口的固件函数 SPI 接口的固件函数
stm32f10x_tim.c
定时器的固件函数
stm32f10x_usart.c stm32f10x_wwdg.c
USART 的固件函数 窗口开门狗的固件函数
1
~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~
珠联璧合
xlzhu@
STM32F10x 库 3.5 使用指南
~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~
3.1 Libraries 目录结构
Libraries 由 CMSIS 标 准 ( Cortex MicroController Software Interface Standard ) 和 STM32F10x_StdPeriph_Driver(标准外设驱动)构成。
FSMC 接口的固件函数
stm32f10x_gpio.c
GPIO 模块的固件函数
stm32f10x_i2c.c stm32f10x_iwdg.c stm32f10x_pwr.c
I2C 模块的固件函数 独立开门狗的固件函数 电源/功耗控制的固件函数
stm32f10x_rcc.c
复位和时钟控制的固件函数
高密度产品,FLASH 大于 128K 互联性高密度产品
startup_stm32f10x_ld.s
低密度产品,FLASH 小于 64K
startup_stm32f10x_ld_vl.s
低密度互联性产品
startup_stm32f10x_md.s startup_stm32f10x_md_vl.s
STM32?V3.5固件库下SysTick的使用
STM32 V3.5固件库下SysTick的使用SysTick定时器被捆绑在NVIC中,用于产生SysTick异常(异常号:15)。
在以前,操作系统还有所有使用了时基的系统,都必须一个硬件定时器来产生需要的“滴答”中断,作为整个系统的时基。
滴答中断对操作系统尤其重要。
例如,操作系统可以为多个任务许以不同数目的时间片,确保没有一个任务能霸占系统;或者把每个定时器周期的某个时间范围赐予特定的任务等,还有操作系统提供的各种定时功能,都与这个滴答定时器有关。
因此,需要一个定时器来产生周期性的中断,而且最好还让用户程序不能随意访问它的寄存器,以维持操作系统“心跳”的节律。
Cortex-M3处理器内部包含了一个简单的定时器。
因为所有的CM3芯片都带有这个定时器,软件在不同CM3器件间的移植工作就得以化简。
该定时器的时钟源可以是内部时钟(FCLK,CM3上的自由运行时钟),或者是外部时钟(CM3处理器上的STCLK信号)。
不过,STCLK的具体来源则由芯片设计者决定,因此不同产品之间的时钟频率可能会大不相同。
因此,需要检视芯片的器件手册来决定选择什么作为时钟源。
SysTick定时器能产生中断,CM3为它专门开出一个异常类型,并且在向量表中有它的一席之地。
它使操作系统和其它系统软件在CM3器件间的移植变得简单多了,因为在所有CM3产品间,SysTick 的处理方式都是相同的。
有4个寄存器控制SysTick定时器,如表8.9至表8.12所示。
校准值寄存器提供了这样一个解决方案:它使系统即使在不同的CM3产品上运行,也能产生恒定的SysTick中断频率。
最简单的作法就是:直接把TENMS的值写入重装载寄存器,这样一来,只要没突破系统的“弹性极限”,就能做到每10ms来一次SysTick异常。
如果需要其它的SysTick异常周期,则可以根据TENMS的值加以比例计算。
只不过,在少数情况下,CM3芯片可能无法准确地提供TENMS 的值(如,CM3的校准输入信号被拉低),所以为保险起见,最好在使用TENMS前检查器件的参考手册。
基于固件库V3.5建立STM32工程
从零开始基于固件库V3.5建立STM32工程一、建立工程文件夹及其子文件夹,在文件夹内拷贝相应的文件,并整理好。
1、建立工程文件夹,将它命名为GPIO。
2、在GPIO下分别建立Lib、User、List及Obj这四个文件夹。
3、将固件库中Libraries文件夹下的"CMSIS"和"STM32F10x_StdPeriph_Driver"这两个文件夹拷贝至上一步建立的Lib文件夹下。
4、将固件库中Project-->STM32F10x_StdPeriph_Examples-->GPIO-->IOToggle内的全部文件拷贝至第2步建立的User文件夹下。
二、建立KELL工程。
1、Project-->New μVision Project...,将新建立的工程保存在步骤1时建立的GPIO文件夹下,并命名为GPIO。
2、在弹出的Select Device for 'Target1'...对话框中,选择相应的器件,我们选择 STM32F103ZE,确定完成后按"OK"。
3、在弹出的询问是否添加启动代码的对话框中,选"否"。
因为我们使用固件库中的启动代码,需要手动添加。
4、点击右键add group,在Target1下建立四个Groups: User 、Lib 、CMSIS、StartUp。
然后添加文件。
4.1在CMSIS Group下添加如下两个c文件:"\GPIO\Lib\CMSIS\CM3\CoreSupport\core_cm3.c"以及"\GPIO\lib\cmsis\cm3\devicesuport\st\stm32fl0x\system_stm32 f10x.c"。
4.2在User Group下添加c文件:将\GPIO\User目录下的所有C文件添加进来。
STM32V3.5固件库函数调用说明(中文版)
STM32V3.5固件库函数调⽤说明(中⽂版)⽬录⽬录 (1)1.变量定义 (4)2.GPIO相关函数 (5)2.1.函数GPIO_Init (5)2.2.函数GPIO_SetBits (6)2.3.函数GPIO_ReadInputDataBit (7)2.4.函数GPIO_ReadOutputDataBit (7)2.5.函数GPIO_PinRemapConfig (8)2.6.函数GPIO_Write (9)2.7.函数GPIO_ReadInputData (10)3.RCC相关函数 (10)3.1.函数RCC_APB2PeriphClockCmd (10)3.2.函数RCC_APB1PeriphClockCmd (11)3.3.函数RCC_AHBPeriphClockCmd (12)3.4.函数RCC_ADCCLKConfig (12)4.SysTick函数——SysTick_Config (12)5.NVIC相关函数 (14)5.1.函数NVIC_Init (14)5.2.函数NVIC_PriorityGroupConfig (17)5.3.函数NVIC_SetPriority (17)6.EXTI相关函数 (17)6.1.函数GPIO_EXTILineConfig (17)6.2.函数EXIT_Init (18)6.3.函数EXTI_GetITStatus (19)6.4.函数EXTI_ClearITPendingBit (19)/doc/998fa6c5900ef12d2af90242a8956bec0975a518.html ART相关函数 (20) 7.2.函数USART_Cmd (21)7.3.函数USART_SendData (21)7.4.函数USART_ReceiveData (22)7.5.函数USART_GetFlagStatus (22)8.6.函数USART_ITConfig (23)8.7.函数USART_GetITStatus (23)8.8.函数USART_ClearFlag (24)8.9.函数USART_ClearITPendingBit (24)8.TIM相关函数 (24)8.1.函数TIM_TimeBaseInit (24)8.2.函数TIM_DeInit (26)8.3.函数TIM_ITConfig (26)8.4.函数TIM_Cmd (27)8.5.函数TIM_GetITStatus (28)8.6.函数TIM_ClearITPendingBit (28)8.7.函数TIM_ARRPreloadConfig (29)8.8.函数TIM_OCxInit (29)8.9.函数TIM_OCxPreloadConfig (30)9.I2C相关函数 (31)9.1.函数I2C_Init (31)9.2.函数I2C_CheckEvent (32)9.3.函数I2C_GetFlagStatus (33)9.4.函数I2C_GenerateSTART (34)9.5.函数I2C_ SendData (35)9.6.函数I2C_ ReceiveData (35)9.7.函数I2C_ Send7bitAddress (35)9.8.函数I2C_ GenerateSTOP (36)10.DMA相关函数 (36)10.1.函数DMA_DeInit (36)10.2.函数DMA_Init (37)10.3.函数DMA_Cmd (38)11.ADC相关函数 (39)11.1.函数ADC_Init (39)11.2.函数ADC_RegularChannelConfig (40) 11.3.函数ADC_DMACmd (41)11.4.函数ADC_ResetCalibration (42)11.5.函数ADC_GetResetCalibrationStatus (42) 11.6.函数ADC_StartCalibration (42)11.7.函数ADC_GetCalibrationStatus (42) 11.8.函数ADC_SoftwareStartConvCmd (43) 11.9.函数ADC_TampSensorVrefintCmd (43) 1.变量定义CMSIS IO类型限定词固件库与CMSIS数据类型对⽐注:__IO表⽰告诉编译器这个变量存在RAM中。
用STM32标准外设库StdPeriph_Lib V3.5在Keil上创建一个STM32工程
用固件库STM32F10x_StdPeriph_Lib_V3.50在Keil上创建STM32工程STM32标准外设库结构步骤:一、建立一个空的STM32工程,选好芯片类型(STM32F103ZE)。
选好芯片类型后点击“OK”,如果选择自己加载启动文件,则在弹出的对话框中点击“否(N)”。
二、在Project栏中添加子类,并加载STM32固件库中的相关文件到相应的子类中。
1.向User子类中加载文件○1加载自己建立的Application.c(如main.c) ;○2加载stm32f10x_it.c文件路径STM32F10x_StdPeriph_Lib_V3.5.0\Project\Example2\User注:User文件夹中有main.c(自己建立的)及stm32f10x_conf.h、stm32f10x_it.h、stm32f10x_it.c、system_stm32f10x.c(来源于STM32F10x_StdPeriph_Lib_V3.5.0\Project\STM32F10x_StdPeriph_Template) 2.向Startup子类中加载启动文件startup_stm32f10x_hd.s(STM32F103ZE属于High density devices系列)文件路径STM32F10x_StdPeriph_Lib_V3.5.0\Libraries\CMSIS\CM3\DeviceSupport\ST\STM32F10x\startup\arm 3.向StdPeriph_Driver子类中加载misc.c及需要使用的外设的驱动文件stm32f10x_ppp.c文件路径STM32F10x_StdPeriph_Lib_V3.5.0\Libraries\STM32F10x_StdPeriph_Driver\src4.向CMSIS子类中加载core_cm3.c及system_stm32f10x.c文件路径STM32F10x_StdPeriph_Lib_V3.5.0\Libraries\CMSIS\CM3\CoreSupport及STM32F10x_StdPeriph_Lib_V3.5.0\Libraries\CMSIS\CM3\DeviceSupport\ST\STM32F10x(或User文件夹)成功加载完所有相关文件后Project栏显示结果如下:三、配置路径点击进入界面后配置“Include Paths”,具体情况要以Project栏中的文件为依据。
STM32_3.5固件库详解.doc
STM32中文说明库文件.doc1.1.1 STM32标准外设库概述STM32标准外设库之前的版本也称固件函数库或简称固件库,是一个固件函数包,它由程序、数据结构和宏组成,包括了微控制器所有外设的性能特征。
该函数库还包括每一个外设的驱动描述和应用实例,为开发者访问底层硬件提供了一个中间API,通过使用固件函数库,无需深入掌握底层硬件细节,开发者就可以轻松应用每一个外设。
因此,使用固态函数库可以大大减少用户的程序编写时间,进而降低开发成本。
每个外设驱动都由一组函数组成,这组函数覆盖了该外设所有功能。
每个器件的开发都由一个通用API (application programming interface 应用编程界面)驱动,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等等的所有标准外设。
对应的C源代码只是用了最基本的C编程的知识,所有代码经过严格测试,易于理解和使用,并且配有完整的文档,非常方便进行二次开发和应用。
1.1.3 STM32F10XXX标准外设库结构与文件描述1. 标准外设库的文件结构在上一小节中已经介绍了使用标准外设库的开发的优势,因此对标准外设库的熟悉程度直接影响到程序的编写,下面让我们来认识一下STM32F10XXX的标准外设库。
STM32F10XXX的标准外设库经历众多的更新目前已经更新到最新的3.5版本,开发环境中自带的标准外设库为2.0.3版本,本书中以比较稳定而且较新的V3.4版本为基础介绍标准外设库的结构。
Keil4下使用STM32库V3.5
Keil4下使用固件库V3.5关联到建立自己工程第一步:下载一个固件库V3.5第二步:提取压缩包中的Librarie s放到你需要经常存放Keil4工程的地方,方便关联。
例如放在F盘,新建的STM32文件夹下。
第三步:打开Keil4,开始新建工程吧。
1.新建一个存放工程的文件夹,再将新建的工程放到此文件夹下。
2.输入文件名后“保存”3.选取您使用的芯片型号点“OK”,进入下一环节4.接着会出现这样的一个提示框,此处是选择是启动文件,但要使用库V3.5,此处点“否”5.此时Project中出现的是这样6.重点来了:选择工具条上的Manage Components, 下图圈中7.接着我们会在此完成文件添加在”Groups”中新建3个文件夹1.StartUp2.Libraryer用于分类存放相关文件8.选中“Groups”中的“StartUp”文件,然后再在Files框下,点击“Add File”找到目录下刚才存放的Libraries文件并打开,找到路径如下,并选中startup_stm32f10x_md.s"F:\STM32\Libraries\CMSIS\CM3\DeviceSupport\ST\STM32F10x\start up\arm\startup_stm32f10x_md.s"同理,我们添加Library文件夹添加:stm32f10x_GPIO.c stm32f10x_rcc.c stm32f10x_tim.c"F:\STM32\Libraries\STM32F10x_StdPeriph_Driver\src\stm32f10x_gpio.c"最后添加我们的“User”文件夹此处需要添加一个系统文件system_stm32f10x.c 路径如下:"F:\STM32\Libraries\CMSIS\CM3\DeviceSupport\ST\STM32F10x\system_stm32f10x.c"添加完成这个文件后,可以点“OK”结束了现在我们的Project中有如图文件:9.新建我们的main.c点红框处新建一个Txet1文件,保存为“main.c”记得加“.c”后缀10.右击Project中的“User”出现有图菜单点击“Add Files to Group ‘User’…”将保存的main.c 文件添加到“User”中至此文件添加完成,如果还需要添加文件,可重复步骤8.911.将我们添加的文件与固件库关联起来点击工具条的“Target Options”弹出右图框12.按蓝色标记步骤,一步一步设置第一步:点击“Include Parts”的浏览按钮出现“Folder Setup ”新建链接如右图步骤一直浏览到右图文件夹,并选中“确定”:第二步:重复第一步骤新建找到路径,选中“inc”文件夹至此,关联固件库完成:如果需要添加自己的库可以采用此类方式,将“.h头文件”关联进来13.接下来是让自己的文件夹更合理,分类更细致的步骤第一步:点击“Output”下“SelectFolder Objects”,并新建一个“Output”文件夹双击打开点“OK”完成第二步:点击“Listing”下“Select Folderfor Listing..”后新建一个listing文件夹,双击打开,点“OK”完成14.选择适合自己开发板的下载器第一步:点击“Debug”,出现如右图选择自己的调试器。
stm32 固件库3.5的移植
stm32 固件库3.5的移植昨天试了试使用STM32固件库3.5,以前都是使用开发板里移植好的例程,所以整了一天才整明白,在这里给大家分享下我的经验,我还是个菜鸟,有说错的地方请大家指出来哦。
我使用的是keil编译器。
首先建立一个工程,在这个工程中加如4个组,我的4个组名分别是 user, startup, CMSIS, stdperiph_driver。
user这个组里主要添加有关你自己工程的函数,有main.c , stm32f10x_conf.h(包含工程中要使用到的外设) , stm32f10x_it.c(中断函数) 。
CMSIS中有core_cm3.c ,system_stm32f10x.c 。
这两个文件都是下载的库压缩包里的,所在目录为STM32F10x_StdPeriph_Lib_V3.5.0\Libraries\CMSIS\CM3\CoreSupport 。
startup 文件夹里存放stm32 的启动文件,在STM32F10x_StdPeriph_Lib_V3.5.0\Libraries\CMSIS\CM3\DeviceSupport\ST\S TM32F10x\startup\arm 这个文件夹下,因为我使用的芯片是stm32f107VC 是互联型芯片,所以我选择的启动文件是startup_stm32f10x_cl.s 这是个汇编文件。
stdperiph_driver 中放的就是库函数了,在STM32F10x_StdPeriph_Lib_V3.5.0\Libraries\STM32F10x_StdPeriph_Driver\s rc 在这个文件里,把这个文件里的所有*.c文件都添加进去就行了。
对了这些文件的添加只需要添加*.c文件就行了,*.h文件在后面的编译会由编译器自动加上的,*.h的添加在后面会讲到的。
然后就是需要更改的文件了。
这里的许多文件是只读的,要修改的时候得先在文件属性里去掉只读。
STM32F10x标准外设库V3.5.0发行说明
� �
每一个例程提供具体的 system_stm32f10x.c 文件 Specific system_stm32f10x.c file provided for each example HTML 文件中包含的例程列表,在根文件夹中提供主要功能, (允许关键字/功能搜索) HTML file containing the examples list, with main features, provided in the root folder (allow search on key word/feature) 项目模板更新,以节省配置时间和方便地使用例程 Template projects updated to save configuration time and easy the examples use 更新例程列表和以前的版本对比: Refreshed example list vs. previous version: � 添加两个新例程:MPU 和 TIM DMA 突发 � Add two new Examples: MPU and TIM DMA Burst 增强 xWDG 例程,当然。准确 IWDG 超时是因 LSI 的频率测量 w/ Timer xWDG examples enhanced, ex. accurate IWDG timeout thanks to LSI freq measure w/ Timer 增强 NVIC 和 SysTick 例程,提供更多如何使用 w/ CMSIS 层详细介绍 NVIC and SysTick examples enhanced to provide more details how to use them w/ CMSIS layer
STM32固件库V3.5.0使用
1:下载STM32_V3.5的固件库去论坛上找,很多2:准备Keil uVision4软件,并安装到电脑上。
3:不要带板凳了,带上你的脑袋就行,因为板凳不会思考。
开始:1:首先解压缩下载的固件库(保留一个备份,你懂的)里面有,_htmresc:ST的logo完全无用,不用理会,Libraries:比较重要的文件包含STM32的系统文件和大量头文件,也就是库文件了。
Project:包含大量外设的例程,和各个软件版本的评估版工程模板。
KEIL对应的就是MDK-ARM文件下的工程模板。
你也可以利用这个工程模板来修改,得到你自己的工程模块,本文不用此法。
Utilities:就是评估版的相关文件:本文也不会用到,无视既可。
这四个文件,(先去掉文件的只读属性吧,相信你会的)2:安照一般的方法,建立工程模板先建立一些文件夹,比如工程模板要建在D盘,下面的D:\STM32\PRO1(项目名字,自己随便定)再该文件夹下面新建以下文件夹Libraries:直接复制上述的的Libraries文件夹,把其中的CMSIS剪切出来,放到PRO1目录下,直接成为另一个文件夹。
另外把STM32F10x_StdPeriph_Driver下的inc和src文件夹剪切出来,放在Libraries目录下,STM32F10x_StdPeriph_Driver文件夹就可以删除了。
会发现里面就只剩下头文件了。
CMSIS:就是从上面粘贴来的。
在CMSIS\CM3\DeviceSupport\ST\STM32F10x目录下直接将Startup文件剪切出来,放在Libraries目录下,其他的不需要动。
里面存放的就是重要的系统文件,先不要理会是什么作用吧,慢慢就明白了。
Startup就是从上面粘贴来的。
我们要用的比如是:STM32F103VC,只要把startup\arm 目录下的startup_stm32f10x_hd.s文件剪切出来,放到Startup下面就好。
STM32固件库V3.5在Keil MDK环境下使用方法
STM32 固件库V3.5 在Keil MDK 环境下使用方法
简介写这篇教程主要是和大家分享使用STM32 的基本方法,也是给自己
学习过程的总结、记录和备忘,避免重复学习之前明白但又忘记的知识和操作。
我现在也是刚开始接触学习STM32,我是在STM32 的固件库V3 基础上进行
学习。
在这里我和大家分享一下使用V3.x 库的方法,希望大家喜欢,如有错
误请指出。
这篇教程分以下几个方面,一:建立工程,设置工程属性。
二:建立条理清
晰的GROUP;三:使用JLINK 仿真调试。
下面就分别逐个说明。
一、新建MDK 工程
1、首先,打开MDK 软件,再点击Project->New uVision Project,如下图所示:
弹出如下对话框:
新建一个文件夹MDK 工程,然后把工程名字设为test,点击保存。
弹出选
择器件的对话框,
我们使用的是stm32 单片机,所以选择STMicroelectronics 下面的器件,如STM32F107VCT6,如图所示:
点击OK,MDK 会弹出一个对话框,如图所示:问是否加载启动代码到当前
工程下面,
如果选择是,则这个启动代码是旧版本库的启动代码,新版本的启动代码和
这个不同,需要自己添加。
在这里我们使用的是新版本的库,所以点击否,自
己添加启动代码。
启动代码是一段和硬件相关的汇编代码,是必不可少的!这个代码具体如何
工作,感兴趣可以研究一下,现在可以不必关心它。
- 1、下载文档前请自行甄别文档内容的完整性,平台不提供额外的编辑、内容补充、找答案等附加服务。
- 2、"仅部分预览"的文档,不可在线预览部分如存在完整性等问题,可反馈申请退款(可完整预览的文档不适用该条件!)。
- 3、如文档侵犯您的权益,请联系客服反馈,我们会尽快为您处理(人工客服工作时间:9:00-18:30)。
1/368 .......................................................................................................................................................... 27 1.2 命名规则 .................................................................................................................................................. 27 1.3 编码规则 .................................................................................................................................................. 28
该固态函数库通过校验所有库函数的输入值来实现实时错误检测。该动态校验提高了软件的鲁棒性。实时 检测适合于用户应用程序的开发和调试。但这会增加了成本,可以在最终应用程序代码中移去,以优化代 码大小和执行速度。想要了解更多细节,请参阅 Section 2.5。
因为该固件库是通用的,并且包括了所有外设的功能,所以应用程序代码的大小和执行速度可能不是最优 的。对大多数应用程序来说,用户可以直接使用之,对于那些在代码大小和执行速度方面有严格要求的应 用程序,该固件库驱动程序可以作为如何设置外设的一份参考资料,根据实际需求对其进行调整。
1.3.1 变量 ................................................................................................................................................ 28 1.3.2 布尔型 ............................................................................................................................................ 28 1.3.3 标志位状态类型 ........................................................................................................................... 29 1.3.4 功能状态类型 ............................................................................................................................... 29 1.3.5 错误状态类型 ............................................................................................................................... 29 1.3.6 外设 ............................................................................................................................................... 29 2.1 压缩包描述 .............................................................................................................................................. 32 2.1.1 文件夹Examples............................................................................................................................ 32 2.1.2 文件夹Library ............................................................................................................................... 32 2.1.3 文件夹Project ................................................................................................................................ 33 2.2 固件函数库文件描述 .............................................................................................................................. 33 2.3 外设的初始化和设置 .............................................................................................................................. 34 2.4 位段(Bit-Banding)............................................................................................................................... 35 2.4.1 映射公式 ....................................................................................................................................... 35 2.4.2 应用实例 ....................................................................................................................................... 35 2.5 运行时间检测 .......................................................................................................................................... 36 4.1 ADC寄存器结构 ....................................................................................................................................... 39 4.2 ADC库函数 ............................................................................................................................................... 40 4.2.1 函数ADC_DeInit........................................................................................................................... 42 4.2.2 函数ADC_Init ............................................................................................................................... 42 4.2.3 函数ADC_StructInit...................................................................................................................... 44 4.2.4 函数ADC_Cmd ............................................................................................................................. 44 4.2.5 函数ADC_DMACmd.................................................................................................................... 45 4.2.6 函数ADC_ITConfig ...................................................................................................................... 45 4.2.7 函数ADC_ResetCalibration ...................................................