搭建STM32的工程文件框架

当前网上比较多的方法都是将库按类放置在不同的文件夹,然后再在keil里c路径里面添加n多路径,这样当换了个编译器时就需要小心的修改添加这些相关的文件路径。个人认为应该在源文件里尽可能的包含文件路径,减少对编译器的设置。

 

建立以下几个文件夹:


List文件夹存放编译的中间文件,RVMDK存放MDK的工程文件,SI4Prj存放sourceinsight工程,src里面就保存用户的源文件和stm32的库文件。

 

文件框架设计和内容架构 文件架框子安装流程_stm32 框架

在src里面建立一个use和STM32Lib的文件夹,use存放用户写的c和h文件,把库里面的所有c和h文件通通复制到STM32Lib文件夹里面。详细说明如下:

1.       STM32F10x_StdPeriph_Lib_V3.5.0\Libraries\STM32F10x_StdPeriph_Driver里src和inc中的所有文件复制到STM32lib文件夹里面。



文件框架设计和内容架构 文件架框子安装流程_stm32 框架_02

文件框架设计和内容架构 文件架框子安装流程_stm32 框架_03

2.      STM32F10x_StdPeriph_Lib_V3.5.0\Libraries\CMSIS\CM3\CoreSupport里的core_cm3.c和core_cm3.h复制到STM32Lib文件夹里面。

文件框架设计和内容架构 文件架框子安装流程_工程文件_04


3.      STM32F10x_StdPeriph_Lib_V3.5.0\Libraries\CMSIS\CM3\DeviceSupport\ST\STM32F10x里的所有文件复制STM32Lib文件夹里面。

文件框架设计和内容架构 文件架框子安装流程_工程文件_05


另外再把STM32F10x_StdPeriph_Lib_V3.5.0\Project\STM32F10x_StdPeriph_Template

里的3个文件复制到STM32Lib文件夹里面,stm32f10x_conf.h是配置开放哪些外设。

stm32f10x_it.c和stm32f10x_it.h是针对M3内核的一些中断处理,这里给出了中断向量和入口函数,用户可以在这里写代码。很多教程是让用户在这里添加其他中断函数比如ADC啊定时器啊串口之类的全部写在这里。个人觉得这两个文件就只写内核的一些中断函数比较好,而其他的外设就写在其他文件里,比如串口的中断就和中断的初始化,串口的接口驱动层写在一个.c文件好了这也比较符合模块化。


 

文件框架设计和内容架构 文件架框子安装流程_文件框架设计和内容架构_06

最后来张完整的STM32Lib文件夹图:

文件框架设计和内容架构 文件架框子安装流程_串口_07


用户的应用C文件中的STM32头文件定义为:             

#include "..\\STM32Lib\\stm32f10x.h"  

这一定义,代表了库的寻址路径变成了src目录中的STM32Lib目录了,之后跟MDK

自带的库将没有任何牵连。如果还需要使用USB的库,则可以在这里放置USB库函数.

如下图,USBLib目录上的就是USB的库.

文件框架设计和内容架构 文件架框子安装流程_stm32 框架_08


 

 

 

 

 

自此一个完整的工程框架就搭好了,来一张MDK的截图做为结束


文件框架设计和内容架构 文件架框子安装流程_stm32 框架_09