STM32F4-基于函数库创建工程模板

Posted xwcs

tags:

篇首语:本文由小常识网(cha138.com)小编为大家整理,主要介绍了STM32F4-基于函数库创建工程模板相关的知识,希望对你有一定的参考价值。

1.创建模板主目录Template,在主目录下添加5个子文件夹(USER,CORE,FWLIB,SYSTEM,OBJ)

 

2.创建项目,打开keil,菜单选择project->new uVision project

项目保存路径为Template/USER,项目名称为Template

选择自己开发的相应芯片,我是用的是STM32F407ZG, 点击ok  点击Cancel

 

3..添加STM32库函数

将函数库目录下STM32F4xx_DSP_StdPeriph_Lib_V1.4.0LibrariesSTM32F4xx_StdPeriph_Driver 中的src与inc复制到FWLIB文件夹中

(src存放的是库函数,inc中存放的是对应的头文件h)
 
4.启动文件复制到我们的工程目录 CORE 之下
STM32F4xx_DSP_StdPeriph_Lib_V1.4.0LibrariesCMSISDeviceSTSTM32F4xxSourceTemplat
esarm 下面,将文件 startup_stm32f40_41xxx.s 复制到 CORE 目录下面
 
STM32F4xx_DSP_StdPeriph_Lib_V1.4.0LibrariesCMSISInclud , 将 里 面 的 四 个 头文件 :
core_cm4.h、core_cm4_simd.h、core_cmFunc.h 以及 core_cmInstr.h 同样复制到 CORE 目录下
面。现在看看我们的 CORE 文件夹下面的文件
 
5.定位到目录:STM32F4xx_DSP_StdPeriph_Lib_V1.4.0LibrariesCMSISDeviceSTSTM32F4xxInclude 将里面
的 2 个头文件 stm32f4xx.h 和 system_stm32f4xx.h 复制到 USER 目录之下。这两个头文件是
STM32F4 工程非常关键的两个头文件。
然后进入目录STM32F4xx_DSP_StdPeriph_Lib_V1.4.0ProjectSTM32F4xx_StdPeriph_Templates ,
将 目 录 下 面 的 5 个 文 件 main.c , stm32f4xx_conf.h , stm32f4xx_it.c , stm32f4xx_it.h ,system_stm32f4xx.c 复制到 USER 目录下面。
 
6.我们将需要的固件库相关文件复制到了我们的工程目录下面,下面我们将
这些文件加入我们的工程中去。右键点击 Target1,选择 Manage Project Items
将project Targedts下的Target1命名为Template
在group下点击虚线框按钮添加3个目录(USER,CORE,FWELIB)
 
7。下面我们往 Group 里面添加我们需要的文件。我们按照步骤 9 的方法, 右键点击点击
Tempate,选择 Manage Project Items.然后选择需要添加文件的 Group,这里第一步我们选
择 FWLIB,然后点击右边的 Add Files,定位到我们刚才建立的目录FWLIBsrc 下面,将里
面所有的文件选中(Ctrl+A),然后点击 Add,然后 Close.可以看到 Files 列表下面包含我们
添加的文件,
对于我们写代码,如果我们只用到了其中的某个外设,我们就可以不
用添加没有用到的外设的库文件。例如我只用 GPIO,我可以只用添加 stm32f4xx_gpio.c 而
其他的可以不用添加。这里我们全部添加进来是为了后面方便,不用每次添加,当然这样
的坏处是工程太大,编译起来速度慢,用户可以自行选择。 
 
这里有个文件 stm32f4xx_fmc.c 比较特殊。这个文件是 STM32F42 和 STM32F43 系列才用到,
所以我们这里要把它删掉(注意是 stm32f4xx_fmc.c 要删掉,不要删掉 stm32f4xx_fsmc.c)
 
8.将 Groups 定位到 CORE 和 USER 下面,添加需要的文件。这里
我们的 CORE 下面需要添加的文件为 startup_stm32f40_41xxx.s(注意,默认添加的时候文件类
型为.c,也就是添加 startup_stm32f40_41xxx.s 启动文件的时候,你需要选择文件类型为 All files
才能看得到这个文件 ),USER 目录下面需要添加的文件为 main.c,stm32f4xx_it.c,
system_stm32f4xx.c。 这样我们需要添加的文件已经添加到我们的工程中去了,最后点击 OK,
回到工程主界面。
 
9.接下来我们要在 MDK 里面设置头文件存放路径。也就是告诉 MDK 到那些目录下面去寻
找包含了的头文件。这一步骤非常重要。如果没有设置头文件路径,那么工程会出现报错
头文件路径找不到。
点击魔棒工具->选择c/c++
选择includ paths
添加三个目录
CORE,FWLIB/inc,USER
 
然后在 Define 输入框连输入:STM32F40_41xxx,USE_STDPERIPH_DRIVER。注意这里是两个标识符 STM32F40_41xxx
和 USE_STDPERIPH_DRIVER,他们之间是用逗号隔开的
 
10.接下来我们要编译工程,在编译之前我们首先要选择编译中间文件编译后存放目录。
方法是点击魔术棒
,然后选择“Output”选项下面的“Select folder for objects…”,
然后选择目录为我们上面新建的 OBJ 目录。同时将下方的三个选项框都勾上
 
在编译之前,我们先把 main.c 文件里面的内容替换为如下内容:
#include "stm32f4xx.h" 
void Delay(__IO uint32_t nCount);
void Delay(__IO uint32_t nCount)
{
 while(nCount--){}
}
int main(void)
{
GPIO_InitTypeDef GPIO_InitStructure;
 RCC_AHB1PeriphClockCmd(RCC_AHB1Periph_GPIOF, ENABLE);
 GPIO_InitStructure.GPIO_Pin = GPIO_Pin_9 | GPIO_Pin_10;
 GPIO_InitStructure.GPIO_Mode = GPIO_Mode_OUT;
 GPIO_InitStructure.GPIO_OType = GPIO_OType_PP;
 GPIO_InitStructure.GPIO_Speed = GPIO_Speed_100MHz;
 GPIO_InitStructure.GPIO_PuPd = GPIO_PuPd_UP;
 GPIO_Init(GPIOF, &GPIO_InitStructure);
while(1){
GPIO_SetBits(GPIOF,GPIO_Pin_9|GPIO_Pin_10);
Delay(0x7FFFFF);
GPIO_ResetBits(GPIOF,GPIO_Pin_9|GPIO_Pin_10);
Delay(0x7FFFFF);
} }

  

与此同时,我们要将 USER 分组下面的 stm32f4xx_it.c 文件内容清空。或者删掉其中的 32 行对
main.h 头文件的引入以及 144 行 SysTick_Handler 函数内容,
 
下面我们点击编译按钮编译工程,可以看到工程编译通过没有任何错误和警告
 
11.这里我们要修改 System_stm32f4xx.c 文件,把 PLL 第一级分频系数 M 修改为 8,
这样达到主时钟频率为 168MHz。修改方法如下: 
#define PLL_M 8
#define HSE_VALUE ((uint32_t)8000000) 

以上是关于STM32F4-基于函数库创建工程模板的主要内容,如果未能解决你的问题,请参考以下文章

STM32F4基于库函数移植DSP源码“DSP简介及工程创建“

STM32F4基于库函数移植DSP源码“DSP简介及工程创建“

STM32F4 HAL库开发 -- 新建基于 HAL 库的工程模板

STM32F4 HAL库开发 -- 新建基于 HAL 库的工程模板

STM32F4 HAL库开发 -- 新建基于 HAL 库的工程模板

STM32F4基于库函数移植DSP源码“DSP简介及工程创建“