基于Nucleo开发板STM32F4XX模版的建立与ST-Link的配置

    本文将建立一个基于Nucleo开发板和KEIL5.14的工程模版,由一下几个部分组成:

    1、工程模版的建立
    2、STlink的设置与永远的流水灯
1、工程模版的建立
    1)在建立工程之前,首先建立一个存放模版文件的文件夹,我们把它叫做template。然后在建立6个子文件夹:Doc,Libraries,Listing,Output,Project,USER,在Libraries里建立CMSIS和FWlib文件夹,在CMSIS中建立startup,这些文件夹的名字可以任意取的,这样命名只是为了方便识别。对于这些文件夹用来存放什么文件,后面将会有说明。新建好的目录结构如下图1.1所示。
图1.1      文件目录结构
    2)接下来打开KEIL,点击KEIL的菜单;Project->New Project,然后将目录定位到刚刚建立的Project文件夹下。同时工程名取为template点击保存,我们的工程文件就放在Project文件夹下面。操作过程如下图1.2所示
图1.2     工程建立
    3)接下来会出现一个选择Device的界面,就是要我们选择具体的CPU芯片型号,针对我们的板子,我们选择STM32F411RE,该过程一定要选择正确。
图1.3     芯片型号选择
点击OK,MDK会弹出 Manage Run-Time Environment 对话框,如图1.4所示。这是MDK5的新功能,在这个界面我们可以添加自己需要的组件,从而方便构建开发环境,这里我们不多做介绍。所以在图1.4中我们直接点击cancel。
图1.4      Manage Run-Time Environment界面
 
    4) 下面我们将要把官方的固件库包里的源代码复制到我们的工程目录文件夹下面。找到STM32F4xx_DSP_StdPeriph_Lib\Libraries\STM32F4xx_StdPeriph_Driver,将其目录下的src,inc文件夹copy到我们刚才建立的FWlib文件夹下面,src存放的是固件库的.c文件,inc存放的是对应的.h文件,如图1.5所示。
1.5     官方库源码文件夹
    5)下面我们将固件库包里与启动相关的代码复制到我们的工程目录CORE之下。
打开官方固件包,定位到目录..\STM32F4xx_DSP_StdPeriph_Lib\Libraries\CMSIS\Device\ST\STM32F4xx\Source\Templates\arm下,将startup_stm32f411xe.s复制到CMSIS文件夹下的startup文件夹下,然后定位到目录STM32F4xx_DSP_StdPeriph_Lib\Libraries\CMSIS\Include中,将其中的core_cm4.h、core_cmFunc.h、core_cmInstr.h、core_cmSimd.h复制到CMSIS文件夹下面
1.6     CMSIS文件夹下文件
    
     6)     接下来复制工程模板需要的一些其他头文件和源文件到工程。首先定位到目录: STM32F4xx_DSP_StdPeriph_Lib\Libraries\CMSIS\Device\ST\STM32F4xx\Include将里面的两个头文件stm32f4xx.h、system_stm32f4xx.h 复制到CMSIS文件夹之下。再进入 STM32F4xx_DSP_StdPeriph_Lib\Project\STM32F4xx_StdPeriph_Templates ,将其中的 main.c、stm32f4xx_conf.h、stm32f4xx_it.c、stm32f4xx_it.h、system_stm32f4xx.c复制到USER文件夹下。
    7)     经过前面6个步骤我们将固件库的相关内容复制到了工程目录中,现在将他们添加到工程中。打开工程,右键单击Target1,选择Manage Compoments,在Project Targets一栏,我们将Target1名字修改为template,Groups一栏删掉Source Group1,建立5个Groups: Doc、CMSIS、FWlib、USER、startup,如图1.7所示
图1.7     新建Groups
         8)向Groups添加文件定位到我们之前建立的那些文件夹中,对于写代码来说我们一般只需要用到其中某些外设,就只添加那些外设就可以了这里建立模版所以全部添加,便于以后修改。另外stm32f4xx_fsmc.c、s tm32f4xx_cec.c tm32f4xx_fmc.c、s tm32f4xx_fmpi2c.c、s tm32f4xx_qspi.c s tm32f4xx_spdifrx.c 需要删除掉,否则会编译出错,如图1.8
图1.8     不删除库导致编译出错
 
图1.9     添加文件到FWlib
    9)     接下来要设置头文件存放路径,就是告诉MDK到哪里去寻找头文件,如果不设置就会出现错误。具体操作如图1.10、图1.11所示。 截图00.png
图1.10      设置头文件路径
 

图1.11 设置头文件路径
 
  这里我们要添加的头文件路径为\Libraries\FWlib\inc、\USER、\Libraries\CMSIS,注意是 \Libraries\FWlib\inc,而不是 \Libraries\FWlib\src,千万不要弄错。
 
    10)接下来还要在我们要编译工程,在编译之前我们首先要选择编译中间文件编译后存放目录。方法是;点击魔术棒,然后选择“Output”下面的“Select folders of objects... ”然后选择为我们新建的Output,并且将create hex file勾选上。同时将"Listing" 下面的“Select folders of objects... ”选择为我们新建的Listing。如图1。12所示。 截图01.png
    图1.12     编译输出文件夹的选择
 
    11)在编译之前将main.c替换为一下内容
  1.  1 #include"stm32f4xx.h"
     2 voidDelay(__IO uint32_t nCount);
     3 voidDelay(__IO uint32_t nCount)
     4 {
     5   while(nCount--);
     6 }
     7 int main(void)
     8 {
     9   GPIO_InitTypeDef GPIO_InitStructure;
    10    RCC_AHB1PeriphClockCmd(RCC_AHB1Periph_GPIOA,ENABLE);
    11    GPIO_InitStructure.GPIO_Pin = GPIO_Pin_5;
    12    GPIO_InitStructure.GPIO_Mode = GPIO_Mode_OUT;
    13    GPIO_InitStructure.GPIO_OType = GPIO_OType_PP;
    14    GPIO_InitStructure.GPIO_Speed = GPIO_Speed_100MHz;
    15    GPIO_InitStructure.GPIO_PuPd = GPIO_PuPd_UP;
    16    GPIO_Init(GPIOA,&GPIO_InitStructure);
    17    while(1)
    18   {
    19    GPIO_SetBits(GPIOA,GPIO_Pin_5);
    20    Delay(0x7FFFFF);
    21    GPIO_ResetBits(GPIOA,GPIO_Pin_5);
    22    Delay(0x7FFFFF);
    23   }
    24 }
与此同时,我们要讲USER分组下面的stm43f4xx_it.c文件内容清空,或者删除掉其中的32行的#include "main.h"和144行的Systick_Handler函数内容。紧接着编译会看看是否有错误,最后编译成功。至此模版建立成功
2、ST-Link的设置与永远的流水灯
    1)点击魔术棒,选择Debug,在下拉菜单中选中ST-LINK debugger,并且在setting菜单中设置ort为SWD,速度选择4MHZ然后再点击Flash Download,将Program、Verify和Reset and Run选中,具体操作如图2.1、图2.2、图2.3 截图02.png
图2.1     ST-link的设置
 
截图03.png
图2.2     ST-LINK debug的设置
 
截图04.png
图2.3     Flash Download的设置
    2)完成后就可以单击下载按钮,可以看到板子的灯在闪烁,就不一一上图了。
 
附上具体代码





 

转载于:https://www.cnblogs.com/bugtan/p/4652803.html

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值