STM32_V3.5的固件库工程模板

合集下载

基于ST官方V3.5固件库的STM32新建工程心得

基于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使用

固件库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工程模板

STM32工程模板

你是问有官方固件库创建工程吧?我这里给你说说MDK的创建方法,如果你用的时IAR环境也差不多。

1.解压stm32f10x_stdperiph_lib.zip 可以从ST官方网站免费下载。

最新标准库版本为3.5.02.创建一个Demo文件夹2.1 新建子文件夹User,用于存放用户源程序2.2 新建子文件夹Project,用户KEIL工程文件2.3 在Project下依次创建Obj和List子文件夹,存放编译过程中产生的中间文件。

3. 复制源代码到Demo文件夹3.1 将stm32f10x_stdperiph_lib\STM32F10x_StdPeriph_Lib_V3.1.2Li braries文件整体复制到Demo文件夹下。

这就是ST的标准库,是以源代码形式提供的。

3.2 将库中的演示代码IOToggle中的文件复制到Demo\User文件夹.4. 新建一个Keil MDK工程4.1 启动Keil MDK,点击菜单New uVision Project,然后按向导进行操作4.2 选择CPU类型为STM32F103ZE (这是安富莱STM32开发板采用CPU类型)4.3 当提示是否复制启动代码时,请选择否。

(我们用最新的库中的启动代码,不用Keil软件自带的旧版本启动文件)4.4 根据自己的需要修改Target名字。

(名字任意)4.5 为了便于代码管理,在这个Project下创建几个Group (名字可以任意)User : 存放用户自己写的源代码RVMDK : 存放启动文件(汇编文件)StdPeriph_Driver : 存放ST标准库文件CMSIS : 存放CMSIS接口文件(这也是库的一部分)4.6 创建好Group后,我们开始依次添加文件。

5. 修改源代码。

我们将修改main.c 文件,换成我们自己跑马灯程序。

6. 配置工程, 点击“Options”按钮6.1 切换到Output。

选择Object文件夹。

【自写】如何使用STM32_V3.5版本固件库在Keil4下建立工程模板

【自写】如何使用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文件

关于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来建立一个简单的工程模版

通过STM32固件库V3.5.0来建立一个简单的工程模版
打开 Template 文件夹后如下图所示。 然后,将
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 自带的),

STM32固件库使用手册_v3.5版本

STM32固件库使用手册_v3.5版本
1.3.1 变量 ................................................................................................................................................ 28 1.3.2 布尔型 ............................................................................................................................................ 28 1.3.3 标志位状态类型 ........................................................................................................................... 29 1.3.4 功能状态类型 ............................................................................................................................... 29 1.3.5 错误状态类型 ............................................................................................................................... 29 1.3.6 外设 .............................................................

如何使用STM32 v3.5固件库建工程

如何使用STM32 v3.5固件库建工程

如何使用STM32_V3.5版本固件库建立工程模板准备工作如下: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工程

新建基于STM32固件库V3.5的Keil工程

* @retval None
布谷鸟@UCORTEX
CORTEX 技术之家:
第 6 页,共 7 页
新建基于
STM32 固件库 V3.5 的 Keil 工程
* @param led:指示灯编号 * * */ void LED_Off(uint8_t led) { if(led==0) else{} } /** * @brief 毫秒延时函数 * @param ms: 延时的毫秒数 * @retval None */ void Delay_ms(uint32_t ms) { ms*=12000; while(ms--); } int main(void) { LED_Init(); while (1) { //跑马灯程序 LED_On(0); LED_Off(1); Delay_ms(250); LED_Off(0); LED_On(1); Delay_ms(250); } } 好了,到这里,一个基于 STM32 固件库,实现跑跑马灯功能的工程就完成了,以后所有的项目都可以在这 个工程模版的基础上,进行修改得到。 GPIO_SetBits(GPIOB,GPIO_Pin_5);//点亮 LED0 else if(led==1) GPIO_SetBits(GPIOE,GPIO_Pin_5);//点亮 LED1 @arg 0:LED0 @arg 1:LED1
* @retval None
GPIO_InitStructure.GPIO_Speed = GPIO_Speed_50MHz;//IO 口速度为 50MHz //根据设定参数初始化 GPIOB.5 //PB.5 输出高 //开漏输出,IO 口速度为 50MHz //PE.5 输出高
GPIO_InitStructure.GPIO_Pin = GPIO_Pin_5; //LED1-->PE.5 端口配置, 推挽输出

stm32利用固件库建立工程模板

stm32利用固件库建立工程模板

神州Stm32学习笔记:一、工程模板的创建:为什么要创建工程模板?这是为了我们开发方便。

ST公司对cotex—M系类的处理器写了很多的库文件,我们只需在他们的库文件下进行开发,不需要对stm32的各个寄存器进行配置,st 公司对寄存器的操作已经帮我们弄好了。

我只要会用它提供的接口就ok 了。

我们字需要st提供的固件库上进行我们的项目开发即可。

这样我们如果自己先建立一个工程模板,把需要的文件都包含进来,只需要改我们的自己编写的文件即可。

官方固件库有三个文件夹:先建立自己的文件夹。

这里我建立的是文件夹是STM32工程模板:然后将stm32库解压:直接将library 拷到stm32工程模板文件夹下。

然后在stm32工程模板下建立三个文件夹:obj、user、project这三个文件我是分别用来存放中间目标文件,用户自定义文件。

和工程项目文件。

此时stm32文件下有然后再来看看这些文件夹下分别有什么?Library :其中:cmsis 主要包括三层:Core Peripheral Access Layer(内核外围接入层)、Device Peripheral Access Layer(硬件外围接入)、Access Functions for Peripherals(外围接口函数)。

在mdk的说明书上原文是这样的STM32F10x_StdPeriph_Driver:Z主要是外设接口的定义和实现部分。

其中CMSIS文件夹有这些文件:在CMSIS文件夹内容分布:Coresupport中放的是和内核有关的东西。

Devicesupport放的是有启动文件。

这是library下的主要的东西。

构建自己的工程模板时可以直接考过来即可。

然后是建立自己的文件。

打开keil然后新建工程放在:project文件夹下。

此时文件夹下存在然后建立user文件下的文件。

我们自己的main函数,中断函数还有自己的子程序文件都是放在user下面的。

基于固件库V3.5建立STM32工程

基于固件库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文件添加进来。

用STM32标准外设库StdPeriph_Lib V3.5在Keil上创建一个STM32工程

用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固件库介绍

STM32固件库介绍

STM32固件库介绍前⾔本⽂以STM32F1固件库包为例,其他的⽂件夹⽬录结构⼀样的。

从官⽹下载的压缩包原名称:STM32F10x_StdPeriph_Lib_V3.5.0固件库的获取,参考⽂章:解压后出现四个⽂件夹,⼀个帮助⽂档,⼀个⽹页链接。

主要内容_htmresc⽂件夹ST公司的 LOGO 图标等,这个⽂件夹在建⽴库函数模板时⽤不上。

Libraries⽂件夹存放驱动库的源代码与启动⽂件。

这个⽂件夹很重要,我们将会⽤到⾥⾯的部分⽂件。

该⽂件夹下还有两个⼦⽂件夹:CMSIS 和STM32F10x_StdPeriph_Driver ,这两个⼦⽂件夹包含固件库核⼼的所有⼦⽂件夹和⽂件,主要包含⼤量的头⽂件、源⽂件和系统⽂件,是开发必须使⽤到的。

其中的 inc ⽂件夹和 src ⽂件夹⾥的⽂件是相互对应的。

其中,在 CM3 ⽂件夹中的 CoreSupport ⽂件夹存放的是内核访问层的源⽂件和头⽂件,它们提供进⼊ M3 内核的接⼝。

这是由 Arm 公司提供的 CMSIS 核⼼⽂件,所有 M3 内核的芯⽚都是⼀样的,永远都不需要修改。

DeviceSupport 存放⼀些启动⽂件、⽐较基础的寄存器定义以及中断向量定义的⽂件。

Project⽂件夹存放了ST官⽅⽤驱动库写的例程和⼀个⼯程模板。

STM32F10x_StdPeriph_Examples存放ST 官⽅提供的固件实例源码,⾥⾯详细介绍了 STM32F10x 外设的使⽤源代码,在以后的开发过程中,可以修改这个官⽅提供的参考实例,以快速驱动⾃⼰的外设。

我们也可以学习⼀下⾥⾯的源码。

STM32F10x_StdPeriph_Template ⼦⽬录存放的是⼯程模板。

Utilities⽂件夹存放ST公司的评估板的相关例程代码。

这个⽂件夹对于我们建⽴库函数模板没有帮助。

stm32f10x_stdperiph_lib_um.chm这个是编译过的html⽂件,在后⾯的开发中都要⽤到,⾥⾯有很多规范,其重要性和作⽤不亚于PDF版的参考⼿册。

STM32固件库建立工程

STM32固件库建立工程

STM32固件库建立工程首先新建四个文件夹,如图:OBJ:工程编译过程中的过程文件和一些结果文件,包括.hex文件。

FWLIB:存放固件库源码和头文件。

其中STM32F10x_StdPeriph_Lib_V3.5.0\Libraries\STM32F10x_StdPeriph_Driver文件夹里的“inc”和“src”两个文件夹拷贝到该目录下。

CORE:存放核心文件和启动文件。

其中STM32F10x_StdPeriph_Lib_V3.5.0\Libraries\CMSIS\CM3\CoreSupport文件夹里的“core_cm3.c”和“core_cm3.h”两个文件核心文件拷贝到该目录下。

另STM32F10x_StdPeriph_Lib_V3.5.0\Libraries\CMSIS\CM3\DeviceSupport\ST\STM32F10x\startup\ arm文件夹里的startup_stm32f10x_hd.s(512k)或startup_stm32f10x_md.s(128k)启动文件拷贝到该目录下。

USER:用户自定义主函数和头文件。

其中STM32F10x_StdPeriph_Lib_V3.5.0\Libraries\CMSIS\CM3\DeviceSupport\ST\STM32F10x文件夹里“stm32f10x.h”、“system_stm32f10x.c”和“system_stm32f10x.h”三个文件拷贝到该目录下。

另STM32F10x_StdPeriph_Lib_V3.5.0\Project\STM32F10x_StdPeriph_Template文件夹里的5个.c和.h文件拷贝到该目录下。

然后建立keil c工程,在选择芯片后提示添加文件到工程中时,我们选择“否”。

然后再工程目录里新建文件夹,并添加工程文件。

其中CORE文件夹里把启动文件startup_stm32f10x_hd.s(512k)或startup_stm32f10x_md.s(128k)也添加进去。

使用STM32固件库建立keil工程详细步骤

使用STM32固件库建立keil工程详细步骤

开源电子网
9.下面我们要将固件库包里面相关的启动文件复制到我们的工程目录 CORE 之下。 打开官方固件库包,定位到目录 STM32F10x_StdPeriph_Lib_V3.5.0\Libraries\CMSIS\CM3\CoreSupport 下 面 , 将 文 件 core_cm3.c 和 文 件 core_cm3.h 复 制 到 CORE 下 面 去 。 然 后 定 位 到 目 录 STM32F10x_StdPeriph_Lib_V3.5.0\Libraries\CMSIS\CM3\DeviceSupport\ST\STM32F10x \startup\arm 下面,将里面所有的文件同样复制到 CORE 下面。这里我们解释一下,其 实我们只用到 arm 目录下面的 startup_stm32f10x_md.s 文件,这个文件是针对中等容量 芯 片 的 启 动 文 件 。 其 他 两 个 主 要 的 为 startup_stm32f10x_ld.s 为 小 容 量 , startup_stm32f10x_hs.c 为大容量芯片的启动文件。这里 copy 进来是方便其他开发者使 用小容量或者大容量芯片的用户。 现在看看我们的 CORE 文件夹下面的文件:
8
ALIENTEK STM32 开发板资料
开源电子网
8.下面我们要将官方的固件库包里的源码文件复制到我们的工程目录文件夹下面。 打开官方固件库包,定位到我们之前准备好的固件库包的目录 STM32F10x_StdPeriph_Lib_V3.5.0\Libraries\STM32F10x_StdPeriph_Driver 下面,
将目录下面的 src,inc 文件夹 copy 到我们刚才建立的 STM32F10x_FWLib 文件夹下面。 src 存放的是固件库的.c 文件,inc 存放的是对应的.h 文件,您不妨打开这两个文件目录 过目一下里面的文件,每个外设对应一个.c 文件和一个.h 头文件。

STM32_3.5固件库详解.doc

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版本为基础介绍标准外设库的结构。

stm32 固件库3.5的移植

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的添加在后面会讲到的。

然后就是需要更改的文件了。

这里的许多文件是只读的,要修改的时候得先在文件属性里去掉只读。

stm32各模块函数写法模版(基于V3.5固件库)

stm32各模块函数写法模版(基于V3.5固件库)

STM32学习笔记GPIO口GPIO初始化void GPIO_Configuration(void){GPIO_InitTypeDef GPIO_InitStructure;//声明结构体RCC_APB2PeriphClockCmd(RCC_APB2Periph_GPIOA, ENABLE);//打开功能时钟(再写这句程序的时候,必须进行时钟系统初始化的操作)。

GPIO_InitStructure.GPIO_Pin = GPIO_Pin_4 | GPIO_Pin_5 | GPIO_Pin_6 | GPIO_Pin_7;//指明操作对象引脚GPIO_InitStructure.GPIO_Speed = GPIO_Speed_50MHz;//设置IO口时钟为50MHz/10MHz/2MHzGPIO_InitStructure.GPIO_Mode = GPIO_Mode_Out_PP;//设置推挽输出/*GPIO_Mode_AIN 模拟输入GPIO_Mode_IN_FLOATING 浮空输入(一般为中断所使用)。

GPIO_Mode_IPD 下拉输入GPIO_Mode_IPU 上拉输入GPIO_Mode_Out_OD 开漏输出GPIO_Mode_Out_PP 推挽输出GPIO_Mode_AF_OD 复用开漏输出GPIO_Mode_AF_PP 复用推挽输出*/ (一般用在点灯)。

GPIO_Init(GPIOA, &GPIO_InitStructure); //执行初始化IO口}GPIO常用函数GPIO_SetBits(GPIOA, GPIO_Pin_4 | GPIO_Pin_5 | GPIO_Pin_6 | GPIO_Pin_7);//置高IO口GPIO_ResetBits(GPIOA,GPIO_Pin_4 | GPIO_Pin_5 | GPIO_Pin_6 | GPIO_Pin_7);//置低IO口GPIO_WriteBit(GPIOA, GPIO_Pin_4, (BitAction)(1 - GPIO_ReadOutputDataBit(GPIOA, GPIO_Pin_4)));//翻转IO口GPIOA->ODR = 0X0010 ;//IO口直接赋值语句GPIO_ReadInputDataBit(GPIOA,GPIO_Pin_3)(读取该口的电压值,相当于AVR的pin)。

Keil v3.5.0工程创建

Keil v3.5.0工程创建

Step 1:新建工程文件夹stm32_3.5,再建6个子文件夹cmsis(存放系统的内核文件),startup(存放启动文件),user(存放用户可编辑文件),driver(存放固件库的驱动文件),obj(存放工程及生成的目标文件),list(存放生成的链接文件)。

Step 2:将STM32F10x_StdPeriph_Lib_V3.5.0\Libraries\STM32F10x_StdPeriph_Driver 目录下面的src,inc文件夹拷贝到driver文件夹下面。

src存放的是固件库的.c 文件,inc存放的是对应的.h文件。

Step 3:将STM32F10x_StdPeriph_Lib_V3.5.0\Libraries\CMSIS\CM3\CoreSupport 下面的文件core_cm3.c和文件core_cm3.h 复制到cmsis文件夹中。

将STM32F10x_StdPeriph_Lib_V3.5.0\Libraries\CMSIS\CM3\DeviceSupport\ST\STM32F10x里面的stm32f10x.h,system_stm32f10x.c,system_stm32f10x.h,复制到cmsis文件夹下。

该文件夹下的文件不能轻易修改。

再将目录STM32F10x_StdPeriph_Lib_V3.5.0\Libraries\CMSIS\CM3\DeviceSupport\ST\STM 32F10x\startup\arm下面所有的文件复制到startup文件夹中。

startup_stm32f10x_md.s文件是针对中等容量芯片的启动文件,startup_stm32f10x_ld.s为小容量,startup_stm32f10x_hs.c为大容量芯片的启动文件。

Step 4:将STM32F10x_StdPeriph_Lib_V3.5.0\Project\STM32F10x_StdPeriph_Template下面的4个文件main.c,stm32f10x_conf.h,stm32f10x_it.c,stm32f10x_it.h复制到user文件夹下。

STM32固件库V3.5在Keil MDK环境下使用方法

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. 1、下载文档前请自行甄别文档内容的完整性,平台不提供额外的编辑、内容补充、找答案等附加服务。
  2. 2、"仅部分预览"的文档,不可在线预览部分如存在完整性等问题,可反馈申请退款(可完整预览的文档不适用该条件!)。
  3. 3、如文档侵犯您的权益,请联系客服反馈,我们会尽快为您处理(人工客服工作时间:9:00-18:30)。

准备工作如下: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目录下直接将Sta rtu p文件剪切出来,放在Libraries目录下,其他的不需要动。

里面存放的就是重要的系统文件,先不要理会是什么作用吧,慢慢就明白了。

Startup 就是从上面粘贴来的。

我们要用的比如是:STM32F103VC,只要把startup\arm目录下的startup_stm32f10x_hd.s文件剪切出来,放到Startup 下面就好。

Startup只要这个文件,其它全删吧。

这个就是启动文件,根据芯片存储容量来选择。

USER:请在里面放个main.c的文件,里面就一个WHILE(1)循环就好,但请加上这个头文件:#i nclude "stm32f10x.h"。

另外从固件库的Project\STM32F10x_StdPeriph_Template 目录下复制 stm32f10x_conf.h,stm32f10x_it.c,stm32f10x_it.h。

这四个h文件是Libraries里面没有的,理论上要自己写好的,但是固件库里有就直接复制吧,呵呵。

另外你还发现那个目录下有个system_stm32f10x.c文件,有人问,这个怎么不一起复制了,很简单,因为CMSIS 这个文件夹里面已经有了,个人认为还是放在这里比较好,因为是系统文件。

Project :这个文件夹用来存放项目文件。

比如你等下要建立的工程名字TEST.uvproj,就放在这里。

在该文件下存放一些项目的输出信息,OUTPUT,和LISTING信息,可以建立这两个文件夹。

等下就可以在OPTIONS FOR TARGET 'PROJECT' 里面进行路径设置。

文件夹分配到此结束,为什么要这么分配文件夹呢,其实是个人理解的问题,我这样的目的是为了比较清楚,也符合一般程序员的设置方法。

等你了解了,随便安排文件下都可以。

下面开始建立工程模板。

3:打开KEIL 软件,建立新工程。

比如建TEST.uvproj,保存在刚才的Project 文件夹下面。

选择你使用的STM32芯片,比如我用的是103VC的,就选择那个,确定后,会跳出来个窗口,问你是否复制启动代码,选择否,因为我们已经弄好了,前面的准备工作不是白做的。

然后右键TARGET 1,选择Manage Ccmponents,把文件给加进去吧。

来图片了:加好文件后,出现如下的文件架构。

(按下图加文件吧,每个文件都在相应的文件夹里,前面的工作不是白做的。

)图看不到请看附件图1接下来要设置编译文件的路径,设置好后如下图:图2现在编译,还是有错误的。

可以先编译下,因为main.c中有#i nclude "stm32f10x.h"这句,在这个重要的头文件里,并没有定义好一些东西,分别在stm32f10x.h的0070行,取消对 #define STM32F10X_HD 的屏蔽,0105行取消对#define USE_STDPERIPH_DRIVER的屏蔽,这两个定义好,才能正常工作,第一个是选择存储容量的型号,每种芯片都不太一样,所以让你选择,第二个是使用标准库文件,因为我们是要用库的,所以必须选择,默认是不用库的,直接进行寄存器的操作。

像初学者是用库比较好,所以肯定选择的。

也可以直接如下图操作。

图3,作用是一样的。

选择好后,直接编译,恭喜你,成功了。

4:最后要说明的就是:图4这个库文件,是必须选择misc.c 和stm32f10x_rcc.c的。

另外就是你选择用什么功能,就把什么功能的c文件加进去,我这里已经加了一个对IO口的应用的一个c文件。

5:一些重要文件的说明吧core_cm3.c/core_cm3.h该文件是内核访问层的源文件和头文件,查看其中的代码多半是使用汇编语言编写的。

stm32f10x.h该文件是外设访问层的头文件,该文件是最重要的头文件之一。

例如向量等等。

除了这些该头文件还定义了和外设寄存器相关的结构体,如:typedef struct{__IO uint32_t CRL;__IO uint32_t CRH;__IO uint32_t IDR;__IO uint32_t ODR;__IO uint32_t BSRR;__IO uint32_t BRR;__IO uint32_t LCKR;} GPIO_TypeDef;包含了那么多寄存器的定义,那么在应用文件中(例如自己编写的 main 源文件)只需要包含stm32f10x.h即可。

在stm32f10x.h 8296行#ifdef USE_STDPERIPH_DRIVER#i nclude "stm32f10x_conf.h"#endif这里定义了#i nclude "stm32f10x_conf.h"system_stm32f10x.c/h该头文件也可以称为外设访问层的头文件和源文件。

在该文件中可以定义系统的时钟频率,定义低速时钟总线和高速时钟总线的频率,其中最关键的函数就是 SystemInit()了,这个后面会详细介绍。

总之这两个文件是新固件库V3.5的重点,有了它粮也大大简化了使用 stm32的初始化工作。

stm32f10x_conf.h这个文件和 V2 版本的库的内容是一样的,需要使用哪些外设就取消哪些外设的注释。

stm32f10x_it.c/h这两个文件包含了 stm32中断函数,在源文件和头文件中并没有把所有的中断入口函数都写出来,而只写了 ARM内核的几个异常中断,其他的中断函数需要用户自己编写。

stm32f10x_it.c的最后给了这样一个模板。

/****************************************************************************** //* STM32F10x Peripherals Interrupt Handlers *//* Add here the Interrupt Handler for the used peripheral(s) (PPP), for the *//* available peripheral interrupt handler's name please refer to the startup *//* file (startup_stm32f10x_xx.s). *//****************************************************************************** /*** @brief This handles PPP interrupt r equ est.* @param None* @retval None*//*void PPP_IRQHandler(void){}*/从注释中的英文提示可以看出,中断向量的名称可以从相应的启动代码中找出,例如可以startup_stm32f10x_md.s 中找到 USART1 中断函数的名称——USART1_IRQHandler。

其他的中断函名可以以此类推,一一获得,在这里我就不一一复述了。

Libraries文件夹该文件夹有包含两个文件夹,一个是 src文件夹,另一个是 inc文件夹,顾名思义,一个里面放的是元件一个里面放的是头文件。

这两个文件夹包含了所有的 STM32 的外设驱动函数,其实和 V2 版本也没有太大的变化。

简单来说,外设的驱动相当于 windows的驱动函数 API,这些驱动函数看到函数名基本就可以明白这个函数的作用,例如:GPIO_SetBits 可以置位某个 IO 口,相反 GPIO_ResetBits 则可以复位某个 IO 口。

我个人认为熟练使用库可以大大提高编程的效率,同时规范使用库函数也可以提高程序的可读性,让团队中的其他程序员可以快速的明白代码的作用。

相关文档
最新文档