【自写】如何使用STM32_V3.5版本固件库在Keil4下建立工程模板
- 格式:doc
- 大小:744.50 KB
- 文档页数:9
固件库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四个文件。
如何用keil5新建STM32-新工程
第一步?新建文件夹
第二步在文件夹下新建user文件夹,在user下再建2文件夹分别为inc和src
第三步复制library 到文件夹中
第四步打开电脑中的keil 软件并关闭所有为工程,然后新建工程到目标文件夹中然后选择芯片(以STM32 f103@@@为例)
然后选择想要的型号芯片会有以下界面
在空白处什么都不选直接OK
第五步点击工具图标
第六步
新建cmsis (系统和启动文件) user(客户文件) driver(模块文件)
在cmsis中添加内核文件,系统文件等(在library中)注意芯片的容量hd高容量md 中容量ld 低容量
第七步设置路径
点击上图后有
在Define 中写入系统启动文件的名字(大写)
在路径中写头文件地址
1.内核文件地址
2.运行支持文件
结束应该有如下文件夹确定即可
第八步'点击新建
后保存
.c 文件放在src 里面 .h 文件放在inc中
注意: 在.h文件中开头和结尾一定要有如下格式(LED是c文件名字但是.h文件这里名字必须大写)
第九步骤
双击user 加入.c文件到程序中
第十步在烧录程序的时候用STlink的话记得选择如下界面(如果用sw下载方式在Debug的settings中设置成SW格式就可以)。
首先建立一个文件夹用来装工程(文件夹名自定,笔者建立的文件名为“ggyy_Proj”文件夹)。
在“ggyy_Proj”文件夹下,建立两个文件夹“User”和“Project”。
将库文件STM32F10x_StdPeriph_Lib_V3.5.0(笔者用的这个版本的库)下的“Libraries”文件夹全部拷入“ggyy_Proj”文件夹下。
将“ggyy_Proj”文件夹下的“Project”文件夹下建立三个文件夹“List”、“Obj”和“Pro”。
其中Pro用来存放工程。
将“ggyy_Proj”文件夹下的“User”文件夹下建立两个文件夹“inc”和“src”。
然后将需要用到的文件拷贝到相应的文件夹中:将以下5个.h文件考进ggyy_Proj下User下的inc文件夹中:···ggyy_Proj\Libraries\CMSIS\CM3\CoreSupport\core_cm3.h···ggyy_Proj\Libraries\CMSIS\CM3\DeviceSupport\ST\STM32F10x\system_stm32f10x.h ···ggyy_Proj\Libraries\CMSIS\CM3\DeviceSupport\ST\STM32F10x\stm32f10x.h固件库中:···STM32F10x_StdPeriph_Lib_V3.5.0\Project\STM32F10x_StdPeriph_Template\stm32f10x_co nf.h···STM32F10x_StdPeriph_Lib_V3.5.0\Project\STM32F10x_StdPeriph_Template\stm32f10x_it.h将以下2个.c文件考进ggyy_Proj下User下的src文件夹中:固件库中:···STM32F10x_StdPeriph_Lib_V3.5.0\Project\STM32F10x_StdPeriph_Template\stm32f10x_it.c ···STM32F10x_StdPeriph_Lib_V3.5.0\Project\STM32F10x_StdPeriph_Template\main.c现在打开keil,并点击在Project菜单栏下的New uVision Project…来新建工程。
如何使用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文件中的内容可删除。
在Keil MDK环境下使用STM32固件库简介写这篇教程主要是和大家分享使用STM32的基本方法,也是给自己学习过程的总结、记录和备忘,避免重复学习之前明白但又忘记的知识和操作。
我现在也是刚开始接触学习STM32,我是在STM32的固件库V3基础上进行学习。
在这里我和大家分享一下使用V3.x库的方法,希望大家喜欢,如有错误请指出。
这篇教程分以下几个方面,一:建立工程,设置工程属性。
二:建立条理清晰的GROUP;三:使用JLINK仿真调试。
下面就分别逐个说明。
一、新建MDK工程1、首先,打开MDK软件,再点击Project->New uVision Project…,如下图所示:弹出如下对话框:新建一个文件夹MDK工程,然后把工程名字设为test,点击保存。
弹出选择器件的对话框,我们使用的是stm32单片机,所以选择STMicroelectronics下面的器件,如STM32F107VCT6,如图所示:点击OK,MDK会弹出一个对话框,如图所示:问是否加载启动代码到当前工程下面,如果选择是,则这个启动代码是旧版本库的启动代码,新版本的启动代码和这个不同,需要自己添加。
在这里我们使用的是新版本的库,所以点击否,自己添加启动代码。
启动代码是一段和硬件相关的汇编代码,是必不可少的!这个代码具体如何工作,感兴趣可以研究一下,现在可以不必关心它。
2、接下来我们需要对工程进行一些设置。
在工程区,右键点击Target1,选择Options for Target…Target1‟ 如图所示:弹出如下窗口,选择Output标签,设置目标文件的生成路径及其他相关参数。
如图点击Select Folder for Objects 在弹出的窗口中点空白处新建“Obj”文件夹,然后双击“Obj”文件夹,如图中所示的Path后,点击OK.点击Listing标签,新建“list”文件夹,设置链接文件的生成路径,及相关参数。
如何使用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 下面就好。
1,创建GPIO文件夹2,在此文件夹下创建以下文件夹:User,CMSIS,StdPeripih_Driver,StartUp,Project。
3,在Project文件夹下创建以下文件夹:Object,Listing。
**至此文件夹创建工作完成。
****以下固体库就要发挥作用了**4,将固体库里的Libraries文件夹整个拷贝到GPIO下。
5,在固体库下找到以下文件core_cm3.c,core_cm3.h,stm32f10x.h,system_stm32f10x.c,system_stm32f10x.h,拷贝到自己创建的CMSIS文件夹下。
6,在固体库Project文件夹下找到以下文件main.c,stm32f10x_conf.h,stm32f10x_it.c,stm32f10x_it.h,拷贝至自己创建的User文件夹下。
(注:这边仅以操作GPIO口为例,若是使用其他外设,方法一样,将相应文件夹下的4个文件拷贝即可。
)7,在固体库Libraries文件夹下找到startup》arm,将startup_stm32f10x_hd.s拷贝至自己创建的StartUp文件夹下。
(注:这边以stm32f107VC为例)8,在固体库下找到misc.c,stm32f10x_flash.c,stm32f10x_gpio.c,stm32f10x_rcc.c。
(注:这边仅以操作GPIO口为例,若是使用其他外设,方法一样,将stm32f10x_gpio.c替换即可)。
9,打开KEIL,创建工程,保存至自己创建的Project文件夹下。
跳出是否添加启动代码是选“否”。
10,右击Target,点击Manage Components ,如下图:先添加文件夹(尽量将文件夹名称保持和之前自己创建的几个文件一致),后将c文件添加进去。
11,右击选择弹出窗口如下。
12,设置后即可,方法如下:1》,点击,选择路径为之前自己创建的Object文件夹。
用固件库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如何新建⼀个模板步骤第⼀步:⾸先先新建⼀个⽂件夹(英⽂命名的)——作为⼯程根⽬录第⼆步;在⽂件夹中新建⼀个名为USER的⼦⽬录⽂件第三步:点击 MDK 的菜单:Project –>New Uvision Project ,然后将⽬录定位到刚才建⽴的⽂件夹 Template 之下,在这个⽬录下⾯建⽴⼦⽂件夹 USER然后定位到 USER ⽬录下⾯,我们的⼯程⽂件就都保存到 USER ⽂件夹下⾯。
⼯程命名为 Template,点击保存。
第四步:接下来会出现⼀个选择 CPU 的界⾯,就是选择我们的芯⽚型号。
如图 3.3.3 所⽰,因为 ALIENTEK 战舰 STM32F103 所使⽤的 STM32型号为 STM32F103ZET6,所以在这⾥我们选择 STMicroelectronics STM32F1 Series STM32F103 STM32F103ZET6(如果使⽤的是其他系列的芯⽚,选择相应的型号就可以了。
点击 OK,MDK 会弹出 Manage Run-Time Environment 对话框,如图所⽰:这是 MDK5 新增的⼀个功能,在这个界⾯,我们可以添加⾃⼰需要的组件,从⽽⽅便构建开发环境,不过这⾥我们不做介绍。
所以在图 3.3.4 所⽰界⾯,我们直接点击 Cancel,即可得到如图所⽰界⾯:到这⾥,我们还只是建了⼀个框架,还需要添加启动代码,以及.c ⽂件等。
4) 现在我们看看 USER ⽬录下⾯包含 2 个⽂件夹和 2 个⽂件,如下图所⽰:第五步:接下来,我们在 Template ⼯程⽬录下⾯,新建 3 个⽂件夹 CORE, OBJ 以及 STM32F10x_FWLib。
CORE ⽤来存放核⼼⽂件和启动⽂件,OBJ 是⽤来存放编译过程⽂件以及 hex ⽂件,STM32F10x_FWLib ⽂件夹顾名思义⽤来存放 ST 官⽅提供的库函数源码⽂件。
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”,出现如右图选择自己的调试器。
1.下载对应型号的STM32固件库2.建立好对应的文件夹建立文件夹工程说明主要存放stm32f429的官方固件库存放编译产生的调试信息,hex文件,预览信息,封装库扥文件主要存放内核文件和启动文件存放main函数,中断函数,配置函数,429系统函数在文件夹里放对应的固件库文件1.。
将inc,src文件夹放入。
2.找到放入找到core_cm4,core_cm4_simd,core_cmFunc,core_cmInstr放入3.将里面所有的文本文件放入user文件夹。
将和放入user文件夹。
3.打开Keil建立工程模板一找到对应的STM32芯片型号二在该对话框中建立STARTUP,User,Libraries文件夹,给这三个文件夹中添加c文件,STARTUP文件夹中只添加.s启动文件三勾选Use MicroLib 为了日后编写串口驱动的时候可以使用printf函数勾选Create HEX File,在编译过程当中产生hex文件选择Select Folder for Objects 为文件夹Output选择默认的文件夹不用调整Define添加宏STM32F429_439xx,USE_STDPERIPH_DRIVER,进入Include Paths按如下添加头文件路径要进行仿真的话,选择好对应的USE仿真器型号五STM32F429比较特殊,它的用FMC代替了FSMC,所以要将stm32f4xx—文件不加入编译剔除Include in Target Bulid的勾4.然后就可以在User用文件进行正常的编译了。
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 会弹出一个对话框,如图所示:问是否加载启动代码到当前
工程下面,
如果选择是,则这个启动代码是旧版本库的启动代码,新版本的启动代码和
这个不同,需要自己添加。
在这里我们使用的是新版本的库,所以点击否,自
己添加启动代码。
启动代码是一段和硬件相关的汇编代码,是必不可少的!这个代码具体如何
工作,感兴趣可以研究一下,现在可以不必关心它。
STM32 使用外设库建立keil工程新建文件夹取名为自己想要的名称(如GPIO)1、打开文件,建立如下的文件结构:2、打开Project,建立如下文件:3、打开下载来的外设驱动库如下:4、把Libraries的下的两个文件(CMSIS和STM32F10x_StdPeriph_Driver)拷贝到GPIO文件下:5、打开下载的驱动库下的Project文件,打开STM32F10x_StdPeriph_Examples,找到我们需要的例程,如GPIO6、打开GPIO文件夹7、打开IOToggle,复制除了readerme.txt之外的文件到工程下的User文件。
复制好之后:8、到此,准备工作完毕。
9、打开KEIL,新建工程10、保存在Project文件夹下面,取名为自己的名字,我取名为GPIO。
11、选定自己使用的芯片,点击ok。
12、此时会跳出这个对框框,选择否:13、工程建好后是这样的。
14、在工程上右键选择Mange Componts 如下:15、建立如下组16、在User下面添加刚才方法哦User下的C文件:点击Add17、增加StdPeriph_Driver的文件,在自己工程StdPeriph_Driver下面的下面的src文件如下:(说明:只需要增加自己需要的,我这里全部添加了)18、在CMSIS下增加文件:CMSIS文件下的CM3的CoreSupport的文件19、在StartUp下面增加位于下的文件20、选择自己芯片对应的文件。
我用的是第二种startup_stm32f10x_hd.s21、增加完文件后工程如下现在左键点击选中GPIO工程名,在点击右键选择Options for Target ‘GPIO’来配置工程22、在output页面下点击Select Folder Objects…,选择我们在Project目录下的Obj文件23、勾选长生hex文件。
24、在Listing页面下点击Select Folder Objects for listings…,选择我们在project目录下的List文件在C/C++页面下配置,这是预编译的定义;Define 中写入USE_STDPERIPH_DRIVER, STM32F10X_HD其中第一个“USE_STDPERIPH_DRIVER”定义了使用外设库,定义此项会包含*_conf.h 文件,从而使用外设库;而第二个“STM32F10X_HD”从字面理解应该是定义了大等容量的STM32MCU,STM32F10X_MD则为中等容量等。
如何使用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文件中的内容可删除。
Project文件夹:此文件夹用来存放项目文件。
比如你等下要建立的工程名字My Program.uvproj,就放在这里。
在该文件下存放一些项目的输出信息,OUTPUT,和LISTING 信息,可以建立这两个文件夹,之后就可以在OPTIONS FOR TARGET 'PROJECT' 里面进行路径设置。
3.打开Keil4软件,在Project菜单下选择New uVision Project新建新的项目,键入新的项目名称如My Program,保存到刚才的Project文件夹下面。
4.选择芯片类型,根据实际情况选择芯片类型,我们在这里选择STM32F103c8,确定后弹出一个窗口询问是否复制启动代码,选择“否”,如图所示。
5.这时点击如图所示的图标。
弹出如下窗口:可根据实际需要添加相应的文件,如图所示:添加完后Project区域的树形结构如图所示:6.接下来要设置设置目标选项,点图标进入Target Option界面如图所示,在上面设置晶振的实际时钟频率,我们所用的时钟为8.00MHz。
选择Output项进行如图所示设置。
点击Listing选项,并配置Listing文件的所在路径为Projet下的Listing文件夹。
接下来配置编译器的路径,设置如图所示:在“ C/C++ ”选项中我们可以加入预定义的宏,这里请一定加入USE_STDPERIPH_DRIVER,STM32F10X_MD 这两个宏。
另外,我们在下面的“Include Paths”框中可以填入我们.h 文件所在的目录,如“.\Lib;.\Lib\inc;.\User”,方便编译器搜索头文件定义。
如果现在编译,还是有错误的。
可以先编译下,因为main.c中有头文件#include "stm32f10x.h"这句,在这个重要的头文件里,并没有定义好一些东西,分别在stm32f10x.h文件中取消对#define STM32F10X_MD和#define USE_STDPERIPH_DRIVER的屏蔽,这两个定义好,才能正常工作,第一个是选择存储容量的型号,每种芯片都不太一样,所以让你选择,第二个是使用标准库文件,因为我们是要用库的,所以必须选择,默认是不用库的,直接进行寄存器的操作。
也可以直接如下图操作。
在Define中添加USE_STDPERIPH_DRIVER,STM32F10X_MD作用是一样的。
选择好后,直接编译,恭喜你,成功了。
最后要说明的就是:图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的重点,有了它粮也大大简化了使用stm3 2的初始化工作。
stm32f10x_conf.h这个文件和V2 版本的库的内容是一样的,需要使用哪些外设就取消哪些外设的注释。
stm32f10x_it.c/h这两个文件包含了stm32中断函数,在源文件和头文件中并没有把所有的中断入口函数都写出来,而只写了ARM内核的几个异常中断,其他的中断函数需要用户自己编写。
stm32 f10x_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 request.* @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 口。
我个人认为熟练使用库可以大大提高编程的效率,同时规范使用库函数也可以提高程序的可读性,让团队中的其他程序员可以快速的明白代码的作用。