1.建立项目文件
将固件库的工程模板的文件制作完成后,接着建立Keil项目模板,在Keil下新建一个项目文件,另存到工程\FL_Template\Project目录下,并命名为FL_Template,选择芯片STM32F407ZGTx,这时进入运行环境的选择栏。与之前不同的是,这里须取消选择运行环境,如图3-10所示。这是因为使用了固件库的工程模板,相当于已经建立好了运行环境,如果再使用系统的运行环境,会发生冲突。
2.建立组
建立好的Keil项目目前还是空的,要像建立文件夹一样建立相应的文件结构。在Target1下默认只有一个Source Group1组,这里要建立与新建文件夹类似的组。具体做法:右击Target1图标,在弹出的快捷菜单中单击“Add Group”,添加组(默认组名为New Group),选择该组并右击,可以修改组名。添加几个组,并分别命名为STARTUP、CMSIS、STM32F4xx_StdPeriph_Driver、User,如图3-11所示。组结构的含义分别是启动、内核、外设与用户编程,再下一步是将刚才准备好的文件一一加入各个组中。
图3-10 取消选择运行环境
图3-11 在Target 1下添加组
首先,添加STARTUP组文件。双击STARTUP组,会看到添加文件提示(这里添加之前复制好的文件),在路径\FL_Template\Libraries\CMSIS\Device\ST\STM32F4xx\Source\Templates\arm下找到startup_stm32f40xx.s,在“文件类型”下拉列表中选择“All files(*.*)”或“Asm Source file(*.s*;*.src;*.a*)”,如图3-12所示,单击“Add”按钮即可。
图3-12 在STARTUP下加入startup_stm32f40xx.s文件
其次,添加CMSIS组文件。在文件所在的路径\FL_Template\Libraries\CMSIS\Device\ST\STM32F4xx\Source\Templates下找到system_stm32f4xx.c文件,单击“Add”按钮即可。
再次,添加STM32F4xx_StdPeriph_Driver组文件(这里添加的是标准外设驱动,驱动文件比较多)。在路径\FL_Template\Libraries\STM32F4xx_StdPeriph_Driver\src下选中所有的文件并添加到组中(可按快捷键【Ctrl】+【A】键全选)。
最后,添加User组文件。在\FL_Template\User目录下找到main.c和stm32f4xx_it.c文件并添加。
添加文件完毕,可以看到组文件下都有相应的文件。单击加号后,可以看到包含的文件,如图3-13所示。
图3-13 组文件结构
3.设置编译环境
组文件添加完成后,下一步是设置编译环境。比如很多头文件放在了不同文件夹内,编译时要使用这些头文件,必须要先找到它们。在“Option for Target”(魔术棒)选项卡中进行编译环境的设置:
(1)设置Include Paths。
①单击“Option for Target”按钮,进入Target 1选项,选择“C/C++”选项卡,可单击“Include Paths”栏右边的按钮,如图3-14所示,添加头文件路径。(www.xing528.com)
图3-14 配置头文件路径
②进入添加头文件路径界面,单击“New”(Insert),会在栏下方多出一条路径栏,单击右边的按钮(图3-15),选择包含头文件的路径“\FL_Template\User”“\FL_Template\Libraries\CMSIS\Include”(图3-16)。
图3-15 添加头文件路径
图3-16 配置好的头文件路径
(2)添加宏。
继续添加两个宏,用于头文件中的配置(编译器需要根据这些宏定义来决定使用哪些配置)。在“C/C++”选项卡下,如图3-17所示,在“Define”栏中输入“USE_STDPERIPH_DRIVER,STM32F40_41xxx,”,将每个宏用逗号隔开。USE_STDPERIPH_DRIVER是为了让stm32f4xx.h包含stm32f4xx_conf.h这个头文件;STM32F40_41xxx是指使用的芯片是STM32F407/417型号的芯片。
图3-17 添加宏
(3)勾选“Use MicroLIB”。
选择“Target”选项卡,勾选“Use MicroLIB”,如图3-18所示。
图3-18 勾选“Use MicroLIB”
(4)屏蔽不参与编译文件。
下一步是将不需要的外设驱动设置为不参加编译。STM32F4系列有相当多的型号,各种型号之间的外设存在着差异,而固件库具备F4全系列芯片的驱动,因此编译时应对不具备的驱动进行排除,比如STM32F407只有FSMC,而固件库中提供了FMC与FSMC驱动,如果同时编译,编译器会提示出错,因此FMC要屏蔽。相应STM32F407缺失的还有dma2d和ltdc,这些驱动也要屏蔽。具体步骤如图3-19所示,先点开STM32F4xx_StdPeriph_Driver组,找到对应的驱动文件,比如dma2d对应stm32f4xx_dma2d.c,单击右键,弹出文件选项,取消选中“Include in Target Build”,单击“OK”按钮完成设置。注意还要屏蔽stm32f4xx_fmc.c与stm32f4xx_ltdc.c。
图3-19 屏蔽不需要的驱动文件
到此为止,STM32F407的固件库工程模板已制作完毕。读者可以对项目进行编译。由于驱动文件较多,第一次编译时间较长,但一般能顺利通过。将此模板保存好,在今后的工程中都可以直接拷贝,只需在模板的基础上添加代码即可。
免责声明:以上内容源自网络,版权归原作者所有,如有侵犯您的原创版权请告知,我们将尽快删除相关内容。