您的位置:首页 > 其它

如何在STM32F10x_StdPeriph_Template基础上建立自己的MDK工程(二)

2015-09-11 09:12 281 查看
如何在STM32F10x_StdPeriph_Template基础上建立自己的 MDK工程(二)

在网上下载完毕STM3210x的库文件后,对其进行解压,里面有四个文件夹,以STM32F10x_StdPeriph_Lib_V3.5.0为例如下图所示:



图1 库文件解压后包含的文件夹
其中,_htmresc文件夹是ST公司的图标,没用可以删除,而Release_Notes则是一个介绍该库文件相比之前版本有何改动的内容,新手可以忽略这个,而stm32f10x_stdperiph_lib_um是一个帮助手册,函数之类的可以在这里进行搜索,不过貌似不如直接baidu更好一些(针对懒人而言)。以下针对每个文件夹的内容进行分析:
1、Libraries文件夹
还是先看一下Libraries文件夹中的内容有两个如下图所示



图2 Libraries中的内容
(1)其中CMSIS ARM Cortex™ 微控制器软件接口标准(CMSIS:Cortex Microcontroller Software Interface Standard) 是 Cortex-M 处理器系列的与供应商无关的硬件抽象层。CMSIS是ARM公司与多家不同的芯片和软件供应商一起紧密合作定义的,提供了内核与外设、实时操作系统和中间设备之间的通用接口。其里面的内容如下图所示:



图3 CMSIS中的内容
从图中可以看出,对于我们最重要的是CMSIS\DeviceSupport\ST\STM32F10x\startup\arm中的内容,和CMSIS\CoreSupport中的core_cm3.c和core_cm3.h文件,这两个文件应该就是ARM公司提供的,而arm中的内容就是startup的内容,就像keil每次新建工程都会询问是否要添加start51.s文件一样,只是在建立STM32的时候我们应该进行手动导入更好一些,关于文件选择可以参考下面内容

cl:互联型产品,stm32f105/107系列

vl:超值型产品,stm32f100系列

xl:超高密度产品,stm32f101/103系列 超大容量 512-1024K

ld:低密度产品,FLASH小于64K

md:中等密度产品,FLASH=64 or 128

hd:高密度产品,FLASH大于128-512

需要注意的是在STM32F10x文件夹下还有三个源文件如下图所示



图4 STM32F10x下的文件
这三个源文件我们并需要,因此可以不考虑,因为在其它文件夹里有。

(2)在STM32F10x_StdPeriph_Driver文件夹中,内容相对比较简单,就是src和inc文件夹,其中src中为.c文件,inc中为.h文件,分别为STM32单片机相关外设的驱动代码 需要注意的是,Libraries中的内容不能自己修改,

2、 Project文件夹

在本文件夹中主要有两大内容,也是我们平时写程序所能参考的最有用的地方,如下图所示



图5 Project中的内容
其中STM32F10x_StdPeriph_Examples中包含了几乎所有STM32F10x单片机外设的使用详细源代码,具体说明可以进去选择Library_Examples文件进行查看,也可以从网上搜索,此处不做详述。

而STM32F10x_StdPeriph_Template文件夹的内容可以参考图5(a)所示,图5(b)则是STM32F10x_StdPeriph_Examples中任意一个外设参考示例的内容,因此在使用某个外设时,则可按照图5(b)的内容,对图5(a)进行相应的补充和修改。





(a ) (b)
图5两组文件对比
对于上述文件,main里面主要是main函数,为一个工程的根本所在,其包含的头文件在文件最开始部分如下图所示:



图6 main文件的头文件
如图所示,前三个头文件是基本的,其中stm32f10x.h定义了STM32F10x系列的寄存器内容,就好比C8051工程中的C8051F020.h一样,由Keil系统提供。Stm32_eval.h文件则定义了与板子相关的管脚变量定义,就像之前51工程中将P1.0管脚定义成LED0一样,该与板子和程序员的习惯相关,我们可以根据自己的习惯修改。 stm32f10x_conf.h
为参数配置文件,包含了要使用Libraries中外设模块的头文件,如果需要则在该文件中写入,该文件由stm32f10x.h包含。

stm32f10x_it.h与stm32f10x_it.c为中断处理文件,里面包含的STM32单片机的中断处理函数,有需要的地方可以在其相应位置添加内容即可。

system_stm32f10x.c主要是完成系统时钟的设置,而更详细的设置则可调用Libraries中外设模块stm32f10x_rcc.c中的函数完成。

在STM32F10x_StdPeriph_Template文件夹中,MDK-ARM里面保存是keil的工程文件,而EWARM则IAR的工程文件,其它几个文件夹为编译输出结果之类的东西。

3、 Utilities文件夹

在Utilities文件夹中,只有一个STM32_EVAL文件夹,Eval文件是ST公司提供的几种测试评估样板的硬件定义文件,简单点说就是把板子上的每个硬件接口都起个名字,编程的时候用的是硬件的名字而不是本来的端口名。这个文件必须对应相应的硬件主板,3.5的库里现在有6种不同的板子,您可以在stm32_eval.h这个文件中看到。你也可以仿照这个文件自己定义其它的开发板硬件。其内容如下图所示



图7 STM32_EVAL中的内容
在根目录下有两个文件分别stm32_eval.c和stm32_eval.h文件,其中stm32_eval.c貌似只起到了一个根据宏定义选择哪个开发板文件的作用,可以参考例子添加自己的板子工程专用文件。

而stm32_eval.h则是定义了板子工程专用的变量之类,以及根据宏定义选择哪个专用头文件作用。 因此这两个文件可以考虑不动,就用来进行文件的包含和选择作用,也可以将其删除,但要将工程专用头文件在main文件或其它用的文件里包含。

4、 总结

从上面可以看出,需要我们修改的文件主要有main.c、stm32f10x_conf.h、stm32f10x_it.c、system_stm32f10x.c,再就是添加自己EVAL的专用文件。其中需要注意的是要在工程建立时定义的宏定义如下图所示,其中USE_STDPERIPH_DRIVER表示使用标准库,STM32F10X_HD_VL表示使用芯片类型,USE_STM32100E_EVAL则表示使用哪个板子的专用程序。



图8 需要设置的地方
内容来自用户分享和网络整理,不保证内容的准确性,如有侵权内容,可联系管理员处理 点击这里给我发消息
标签: