搭建STM32-NUCLEO-KEIL-MDK工程模板

作者: fengye5340
上传时间为: 2014-12-06 10:33 PM
2014-12-06
阅读:

        搭建好一个IDE开发平台后,我们就可以进行编程实践了。ST提供了众多的固件库文件和第三方软件包来支持NCULEO开发平台,非常方便我们调用其中已封装好的函数文件,但也存在一个大问题,那就是调用的固件库和程序包来自四面八方,如果不经整理就直接调用,工程文件的移植性不强。举例说明,如果A和B合作开发一个项目,A做了很多代码,并调用了很多库文件和第三方驱动包,A将工程文件发给B后,除非在B的电脑上有相同的文件夹和路径,否则B拿到的工程文件是无法直接编译和运行的,这样的结果经常会导致交流效率低下,开发进度受影响。为了杜绝这种情况的出现,必须修改ST库文件代码的位置和路径,使得所用到的必备库文件和第三方插件都封闭在一个大文件内,实现了对文件的相对寻址。这样,将工程文件发给任何人,别人都可以轻易地在不修改工程路径的情况下顺利编译和下载。这个就是建立一个工程模板的必要性,这一篇文章讲一下如何建立基于STM32-NUCLEO-F072RB的KEIL-MDK工程模板。

一、工程文件模板作用

首先,说明说一下建立工程模块的好处,也就是它的作用,主要有两个亮点:

1、便于程序代码模块化,封装化

2、便于多人合作分工开发STM32项目

二、工程文件模板的制作步骤

1、建立项目文件夹

首先,要建立一个大的文件夹,里面再放置小文件夹,每个小文件夹放置不同的ST提供的库源文件或者自己编写的驱动文件等,在覆盖全部官网文件外,也使得自己的编程代码模块化管理,不再是以前那种一个main.c 文件打天下的局面。

下面是每个子文件夹的说明

•Driver: 存放自己编写的驱动

•Lib:ST提供的固件库

•Mdk: 存放工程文件名/编译后产生的文件

•Startup: 存放启动文件(.s)

•Stm32f072rbt6:放置宏定义文件和MCU寄存器配置

•User:放置主程序/包含预处理文件

•Clean.bat :批处理文件,用于清理编译后产生的不用文件

•程序说明.txt 对程序改动进行说明

2、移植官网提供的固件库软件包

ST官网针对每个系列MCU提供了非常完备的底层硬件驱动库,这些库文件以.C和.H文件形式提供。里面是些对寄存器内容的封装函数,编程时直接调用即可。库文件针对不同的外设模块进行了区分,非常容易分模块学习。

3、移植官网提供的宏定义文件

这些宏定义文件包括MCU寄存器定义文件/时钟配置文件/开发板宏定义配置文件/中断配置文件/启动文件等内容。下面是文件内容截图,文件全部来源于STM32-072DISCOVERY和STM32_NUCLEO_FW_1.2.1两个固件包内(这样不必每次都要加载两个大容量的固件包)

4、建立MDK工程文件,在里面设置好工作路径及其他配置

整理好文件夹内容,接下来就开始建立一个KEIL-MDK工程文件,再向里面增加工作组目录,然后将开发所必要的文件加载进去。这里要涉及a、建立工程 b、设置正确的器件型号c、建立工作组d、设置工作路径e、设置仿真器5个小内容。

建立工程和选择器件型号这个比较简单,下面看一下在工程文件内设置好的工作组

这里建立startup/lib/dirver/user几个工作组,将库文件全部加载,如果不想每次都编译,可以做成.lib文件的形式,新手不推荐这样做。User工作组里面放置main.c和system_stm32f0xx.c和stm32f0xx.c文件,这两个一个是时钟配置文件,一个是中断文件。主函数里面第一个语句可以是调用systemInit();这个在启动文件里面已经调用,可以忽略。

器件型号一定要选择对,否则不能下载,还有时钟要修改为8MHZ才行,默认工程是12MHZ。设置不对也不能下载。

在输出选项里面,勾选hex文件输出。在某些情况下,可以采用ISP方式下载,而不用仿真。

在KEIL-MDK中,重要的地方在【C/C++】这个地方,一个是预处理要设置正确,方便再不同的MCU平台间移植,这里除了基本的预定义: USB_STDPERIPH_DRIVERS外,还要增加STM32F072这个,这里的宏定义内容看stm32f0xx.h文件。第二是优化选项。这里有几个优化级别,设置为默认就可以,设置为level3时,代码优化量最大。这里设置不当,容易引起STM32的MCU出现 hardfaulter错误。第三个是设置工程路径,把加载进来的文件的工作路径都设置到上面,没有设置好,容易出现编译报错,提示找不到文件,不能下载。

加载路径的方法很简单,关键能不能要想到去加载!

设置仿真器就不用说了,仿真器识别不懂器件内核,就不能下载,重新上电或者重启MDK就可以。

保证自己建立的MDK工程模板能够编译通过,有错误就无法下载运行。

出现这样的界面,代表大功告成!

这样建立好的一个工程模板压缩包仅几百K左右,非常方便传递和交流。那些没有采用模板的开发,加载原始固件包的文件通常压缩包都在几十M左右,传输起来都麻烦。

摩尔吧视频地址链接

http://www.moore8.com/courses/306


全部评论 ()
条评论
写评论

创建讨论帖子

登录 后参与评论
系统提示