HAL工程应该这样搭建

描述

 

一、为何要自己手动搭建一个软件工程?

(1)在Keil MDK的开发环境下:工程师都会找一个模板,这个模板可能是在某一家开发板厂家提供的一个例程的基础上进行修改;也可能是这个工程师通过多年的开发经验有自己的一套工程模板。

(2)第一种情况下可能占据比例会更多一些,第二种情况是有经验的工程师自己通过多年的经验和能力来构建工程。个人观点:不管从哪看到模板,不管用谁的模板,在自己经验和能力到达一定的水平后自己创建一个适合自己的模板。这样的好处就是在单片机+MDK这个开发平台下可以掌握全局,任意修改,整体的软件架构根据自己的喜好能随意修改,优化,做到随心所欲。

STM32

二、在Keil5+STM32F429**平台下的软件工程搭建

(1)在PC端造一个位置,创建一个文件夹,文件夹名字叫"02.MDK5+STM32F429"

(2)打开文件夹,创建5个子文件夹

STM32

备注:这样我们就把基础的文件夹全部创建好了,这样做的原因是什么?分层。创建一个软件工程在分层的架构下才能在后续的开发中缕清思路,不会因增加一些功能而每次软件架构都在不停的变动,开发效率降低。

 

STM32

三、打开Keil MDK5软件创建一个新工程

(1)在如下步骤中找到创建工程窗口

 

 

STM32

(2)选择存储创建工程的路径,D:\Personal\Embedded\02.STM32\02.个人开发\STM32F429xx\Example\02.MDK5+STM32F429\Project。这个是我自己创建的工程路径,这个路径的最后一级是上一步创建的Project文件夹,工程名叫Demo,这个名字根据自己的习惯来命名。

STM32

(3)点击保存,然后出现如下界面,这个界面是进行芯片的选型的,这次例程使用的是STM32F429ZITx这个Cortex-M4内核芯片,144pin,256K RAM,2M Flash。根据自己使用的型号选择后点击OK。

 

 

STM32

(4)出现如下界面,我们不做选择,直接点击Cancel,这个界面是添加一些组件,这些组件我们暂时不需要,根据自己后面的实际项目需求来选择。

STM32

(5)创建完成后,出现如下基础工程,当然这个工程只是我们创建的第一步,后续还要添加很多文件来完善。
 

STM32

在Project文件夹下有我们创建成功的工程

 

STM32

四、在各个文件夹下添加所需文件

STM32(1)这些文件我们在哪里查找?首先要在MDK安装目录下有自己对应的xxx_DFP包,为什么需要这个xxx_DFP包?这个包里包含STM32F4xx系列新品的启动文件,配置文件,HAL库,ST官方提供的开发板的相关Demo例程。这个包是ST官方提供的,可以在ST官网上下载,当然也可以在MDK5软件下进行下载 。MD5软件下载xxx_DFP包方法如下:@1.打开MDK5软件,将红圈这个图标打开,这个图标的英文名是"packet installer"

STM32

@2.在安装界面找到ST公司系列新品,F4系列处理器任意点击,然后右侧会有提示安装xxx_DFP安装包,点击install,安装。这个过程比较漫长。因为这个包在ST的境外服务器放置,所以下载过程中会有不稳定断开情况,如果断开后点击关闭重复上述操作,会在上次的断点处开始下载,不影响包的质量,下图这个提示是我已经安装过了,有updata,但updata是灰色的,表示没有包的更新

 

 

STM32

@3.这个包下载完成后,下载到哪个位置了?下载到你的MDK5的安装目录下的某一个路径了,我们要寻找这个包可以按照以下路径来寻找。C:\Personal\install\Work Software\MDK-526\ARM\PACK\Keil。任何一个使用者按照上述步骤操作,都会在相似的目录下找到这个包,红色圈圈圈住的这个包就是下载好的,当然下载好后会自动解压,接下来我们就需要这个DFP包下的一些重要文件来拷贝到我们新建的工程下。

STM32

(2)在创建的工程的Libraries文件夹下再创建3个文件夹

STM32

(3)在Startup下放置一些启动文件@1.第一个文件是:startup_stm32f429xx.s文件,将这个文件拷贝到Startup文件下。

STM32

@2.其他文件分别是:core_cm4.h, core_cmFunc.h, core_cmInstr.h,core_cmSimd.h拷贝到Startup文件下

STM32

@3.这个文件下最终文件如下

 

 

STM32

(4)在HALlib文件夹下放置HAL库文件

 

 

@1.将Inc和Src文件拷贝到HALlib文件夹下,这两个文件就是HAL库,里面全都是API接口函数

 

 

STM32

(5)在SysF4xxInc下面放置一些F4相关配置文件

 

 

@1.将stm32f4xx.h和stm32f429xx.h文件这两个文件拷贝到SysF4xxInc文件夹下,如下图所示:

 

 

STM32

(6)在App文件夹下创建一个文件夹,在这个文件夹下放置一些,用户需要配置+中断函数文件+HAL库底层硬件驱动接口文件等

 

 

@1.创建SysLibraryConfig文件

 

STM32

@2.在这个SysLibraryConfig文件夹下添加相关文件:system_stm32f4xx.h

STM32

@3.把main.h,stm32f4xx_hal_conf.h,stm32f4xx_it.h 这3个文件拷贝到SysLibraryConfig文件夹下

STM32

@4.将stm32f4xx_hal_msp.c,stm32f4xx_it.h,system_stm32f4xx.h 3个文件拷贝到SysLibraryConfig文件夹下,将main.c文件拷贝当App文件夹下

STM32

@5.拷贝完成后App文件夹下如下所示

 

 

STM32

STM32

备注:到这一步已经将所有的文件在工程文件夹下全部添加完成了,接下来需要做的事情是在MDK工程里添加各种文件以及文件路径,进行环境配置

STM32

五、在MDK工程下添加文件

(1)点击图标进入配置界面

 

 

STM32

(2)在配置界面下创建这几个文件路径

 

 

STM32

@1.Startup组放置启动文件,点击Add Files,进入启动文件路径选择界面,在/Libraries/Startup文件下将启动文件全部添加进去,点击Add添加,添加完成后close退出

 

@2.根据@1的步骤在Libraries组下点击Add Files,将Libraries/HALlib/Src路径下的.c文件全部添加进去,这个就是HAL库文件,后续的外设开发API接口几乎都是调用这个文件夹下的

 

@3.和@2操作类似,SysF4xxInc组下将Libraries/HALlib/SysF4xxInc的全部文件添加进去

 

@4.在App组下main.c添加进去

 

@5.在SysLibraryConfig组下将App/SysLibraryConfig文件添加进去,这个可以只添加.c文件

 

@6.将ReadMe组下添加/ReadMe/ReadMe.txt添加进去

 

@7.到了这一步后所有的文件都添加进去了,接下来需要做的是添加文件路径了

 

 

STM32

六、在MDK下添加路路径
 

(1)点击魔术棒进入如下界面,第1步:点击C/C++;第2步:点击“红圈圈3”那个位置“include paths”添加路径,第3步:点击“红圈圈4”进行路径添加
 

STM32

 

 

(2)除了这个工程下的Project路径无需添加之外,其他所有文件的路径必须全部添加进去,否则可能会出现编译时文件无法找到路径现象,最终路径添加结果如下,点击OK确定就可以,点击完成后表示路径添加完成了

 

(3)在define那一栏需要添加全局宏定义,USE_HAL_DRIVER,STM32F429xx,否则编译时会报错

 

(4)编译文件输出路径选择

 

Output选首先勾选Create HEX File,表示编译生成可执行文件,点击Select Dolder For Object,在Projecet文件下 点击“新建文件夹”图标,创建Output文件,这样输出文件就在Output文件夹里面了

 

(5)到了这一步,离成功差90%了,千万别放弃,接线来就是进行对工程编译,工程如何编译就不详细说了,下面只呈现结果

 

编译完成后提示2个警告,2个错误,先看看错误是什么原因:HAL_MspDeInit函数和HAL_MspInit函数在stm32f4xx_hal_msp.c和stm32f4xx_hal_msp_template.c 2个源文件下重复定义,我们将stm32f4xx_hal_msp_template.c这个.c文件在Libraries添加路径下移除掉移除方法如下:

 

找到后点击红圈圈里的图标,这样整个工程里就不包含stm32f4xx_hal_msp_template.c文件了

 

STM32

(6)移除完成后再次编译,显示编译2警告,0错误

 

这个警告的意思是__packed在这个地方无法用到,这个可能是一些参数配置的问题,此处我们不做详细分析,后续会进行详细分析如何消除这个警告

打开APP阅读更多精彩内容
声明:本文内容及配图由入驻作者撰写或者入驻合作网站授权转载。文章观点仅代表作者本人,不代表电子发烧友网立场。文章及其配图仅供工程师学习之用,如有内容侵权或者其他违规问题,请联系本站处理。 举报投诉

全部0条评论

快来发表一下你的评论吧 !

×
20
完善资料,
赚取积分