zoukankan      html  css  js  c++  java
  • 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) 
  • 相关阅读:
    Linux Netcat命令
    clang-format
    keytool
    ip
    Linux iptables
    Linux yum源完全配置
    Makefile
    CMake
    HSTS
    开源镜像
  • 原文地址:https://www.cnblogs.com/xwcs/p/13062180.html
Copyright © 2011-2022 走看看