×
单片机 > 单片机程序设计 > 详情

stm32(库函数)——新建基于固件库的MDK5工程模板

发布时间:2020-06-09 发布时间:
|

这里根据STM32不完全手册记录建立库函数版本的基于固件库的MDK5工程模板。


1、我们每一次新建工程都会新建一个文件夹存放所有文件。


2、点击MDK的菜单:Project—>New Uvision Project,新建工程文件,然后将目录定位在刚刚新建的文件夹之下,然后新建一个子文件夹重命名为USER(存放代码工程等文件),当然也不一定,比如很多人也喜欢新建为project,这些都是因人而异了。


接下来就是选择CPU界面,选择我们使用的芯片型号。


这里我使用的是STM32F103ZET6,所以我就依次选择STMicroelectronics—>STM32F1 Series—>STM32F103—>STM32F103ZE。


特别注意:一定要安装对应的器件pack才会显示这些内容,如果没得选择,请先安装对应的pack。


3、点击ok,MDK会弹出Manage Run-Time Environment对话框。


在这里我们可以添加自己需要的组件,从而更加方便的构建开发环境。


我们直接点Cancel,进入如下界面。


4、前3步我们只是建立一个框架,还需要添加启动代码以及c文件。


此时工程文件夹下面就是这些文件,xiaomo.uvprojx是工程文件,不能删除。这里的其他两个文件夹,Listings和Objects是MDK自动生成的文件夹,用于存放编译过程中产生的中间文件。我们可以把这两个文件夹删除,建立一个新文件夹重命名为OBJ,用来存放编译中间文件。


然后我们继续在工程目录下面新建三文件夹 CORE、OBJ、STM32F10x_FWLib。


CORE用于存放核心文件和启动文件

OBJ用于存放编译过程文件以及hex文件

STM32F10x_FWLib用于存放ST官方提供的库函数源码文件

USER用于存放工程文件和主函数文件main.c,以及其他包括system_stm32f10x.c等


5、下面我们将官方提供的源码文件复制到我们的工程目录文件夹下面。


在固件库中,打开STM32F10x_StdPeriph_Lib_V3.5.0》Libraries》STM32F10x_StdPeriph_Driver


然后我们将inc和src两个文件夹复制到我们刚刚建立的STM32F10x_FWLib文件夹下面

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


6、将官方的固件库中相关的启动文件复制到我们的工程目录CORE下。


打开路劲STM32F10x_StdPeriph_Lib_V3.5.0》Libraries》CMSIS》CM3》DeviceSupport》ST》STM32F10x》startup》arm,这个文件夹里面都是启动文件,然后我们根据使用的芯片选择合适的启动文件。


具体选择如下:


小容量:FLASH≤32K                           startup_stm32f10x_ld.s

中容量:64K≤FLASH≤128K                 startup_stm32f10x_md.s

大容量:256K≤FLASH                         startup_stm32f10x_hd.s

我使用的是STM32F103ZET6是大容量芯片,所以选用startup_stm32f10x_hd.s这个启动文件。


将这个文件复制到新建工程目录中的CORE文件夹中。


然后打开路径STM32F10x_StdPeriph_Lib_V3.5.0》Libraries》CMSIS》CM3》CoreSupport


也将该目录下得两个文件core_cm3.c和core_cm3.h复制到CORE文件夹中。


此时CORE文件夹下有如下三个文件。


7、打开路径STM32F10x_StdPeriph_Lib_V3.5.0》Libraries》CMSIS》CM3》DeviceSupport》ST》STM32F10x,将如下三个文件复制到工程目录下的USER中


再打开路径STM32F10x_StdPeriph_Lib_V3.5.0》Project》STM32F10x_StdPeriph_Template,将该目录下的四个文件main.c、stm32f10x_conf.h、stm32f10x_it.c、stm32f10x_it.h复制到USER目录中。


此时USER目录下有以下文件

8、到现在,我们已经将固件库中的相关文件复制到了我们的工程目录中了,然后我们需要将这些文件加入到我们的工程中。


在MDK5中,右击Target1,选择Manage Project Items。


然后会弹出如下界面,在Project Targets一栏我们可以自定义Target名字,双击即可修改名字。比如我给修改为xiaomo。

然后在Groups一栏,删掉Source Group1或者直接修改名字。然后新建三个Groups:USER、CORE、FWLIB,点击OK。

9、然后我们向Group中添加我们需要的文件。


首先选中Group然后点击右下角的Add Files,将工程目录下的USER文件夹中的三个c文件添加到Group中,


然后选中CORE再点击Add Files,然后选择CORE文件夹下得core_cm3.c和startup_stm32f10x_hd.s(注意:这里默认是选择c文件,所以我们需要在文件类型选择All files,然后才能选中.s文件)


再选中FWLIB,然后将STM32F10x_FWLib/src文件夹下的所有c文件添加到这个Group中。


添加完成之后就是如下图所示


点击OK保存。


在Project中展开就是这样

10、打开Options,选择Output,点击Select Folder for Objects,选择OBJ目录,将编译中间文件全部放在OBJ文件夹中,勾选Create HEX File,点击OK保存。



如果不设置Output路径,默认保存在自动生成的Objects和Listings目录中。


11、包含头文件路径。打开Options for Target,选择C/C++,点击Include Paths右边的按钮,弹出添加path对话框。


然后将工程中所有的头文件目录添加进去(注意:必须添加到最后一级子目录)


12、配置全局宏定义变量


打开Options for Target,选择C/C++,在Define一栏中输出


STM32F10x_HD,USE_STDPERIPH_DRIVER

在这里,如果使用的是中容量的芯片,就输入


STM32F10x_MD,USE_STDPERIPH_DRIVER

小容量就是


STM32F10x_LD,USE_STDPERIPH_DRIVER


 输入完成点击OK保存。


然后编译, 0 Error(s), 0 Warning(s).

工程建立成功。 

关键字:stm32  库函数  固件库  MDK5  工程模板 

『本文转载自网络,版权归原作者所有,如有侵权请联系删除』

热门文章 更多
51单片机中断源的扩展方法