STM32F4 Discovery建工程 (修改小船之前问题,以及对USE_STDPERIPH_DRIVER解释)

来源:互联网 发布:三维钢结构设计软件 编辑:程序博客网 时间:2024/05/15 07:34

STM32F4 Discovery第一步——新建工程

  我用的是IAR来编辑,编译,调试工程的,因此首先介绍一下IAR。IAR Embedded Workbench for ARM 是一套支持ARM所有处理器的集成开发环境,包括项目管理器、编译器、C/C++编译器、汇编器、连接器和调试器。在IAR Embedded Workbench for ARM环境下可以使用C/C++和汇编语言方便的开发ARM嵌入式应用程序,比较其他的ARM开发环境,IAR Embedded Workbench for ARM具有入门容易、使用方便、代码紧凑等特点。通过其内置的针对不同的芯片的代码优化器,IAR Embedded Workbench for ARM可以为ARM芯片生成非常高效和可靠的FLASH/PROMable代码。不仅有可靠的技术,IAR Systems还为您提供专业的全球技术支持。(此段内容来自IAR网站)

 然后我们一步步创建一个工程。

1.新建一个文件夹,命名为工程的名字,在这个文件夹里创建我们的   工程。为了更好的管理工程,我们现在此文件夹下新建三个文件夹,分别命名为user,inc和startup,如下图所示:

2.到st官网站上下载这块板子的库函数例程:

3.把STM32F4-Discovery_FW_V1.1.0\Libraries\CMSIS\Include目录下的core_cm4.h

4.core_cm4_simd.h  core_cmFunc.h  core_cmInstr.h复制到inc目录下,

5.然后在把STM32F4-Discovery_FW_V1.1.0\Libraries\CMSIS\ST\STM32F4xx\Include目录下stm32f4xx.h和system_stm32f4xx.h文件复制到inc目录下。inc目录下的文件如下图所示:

6.目录下。inc目录下的文件如下图所示:

7.STM32F4-Discovery_FW_1.1.0\Libraries\CMSIS\ST\STM32F4xx\Source\Templates\iar目录下的starup_stm32f4xx.s复制到startup目录下。

  5.STM32F4-Discovery_FW_1.1.0\Libraries\CMSIS\ST\STM32F4xx\Source\Template目录下的system_stm32f4xx.c文件复制到user目录下

6.打开IAR,界面如下

7.点击project->Creat New Project,出现如下对话框:

点击OK,出现如下对话框:找到刚才建立的文件夹,打开,然后在文件名中写入工程的名字,点击保存。

8.然后右击Files下的工程,点击Add,按下图所示点击Add Group,出现如下对话框:输入user,点OK。重复步骤7,在建立两个Group,分别命名为startup和inc

9.右击inc->Add->Files,如下图所示:然后在对话框中打开刚才创建的inc文件夹,把其中的文件全部选中,如下图所示:点击打开。重复步骤8,在Group starup中添加文件夹startup中的startup_stm32f4xx.s文件,在Group user中添加文件夹user中的system_stm32f4xx.c文件,完成后如下图所示;

10.点击File下的图标新建一个文件,我们的主程序就写在这个文件中,点击保存,命名为main.c吧,保存在user目录下。

11.然后加到Group user下

12.右击工程Options弹出如下对话框,

Target页按上图所示设置点击C/C++Compler,点击Prerocessor页,按下图设置

STM32F4XX

xVECT_TAB_SRAM

 USE_STDPERIPH_DRIVER

 

 

 

 

 

 

注意:为什么要添加 USE_STDPERIPH_DRIVER

在stm32f4xx.h中有这么一句

#ifdef USE_STDPERIPH_DRIVER

  #include"stm32f4xx_conf.h"

#endif /* USE_STDPERIPH_DRIVER */

由此可只 添加USE_STDPERIPH_DRIVER宏定义是为了加载stm32f10x_conf.h文件。

这段代码的意思是,只有用预编译指令预定义了“USE_STDPERIPH_DRIVER”,才会将"stm32f10x_conf.h"包含进“stm32f10x.h”中,从而被"main.c"用到。这就解释了,为什么我们没有在“main.c”中包 含"stm32f10x_conf.h",而在编译之后却被包含进了"main.c"中,出现如图所示的情况。         "stm32f10x_conf.h"文件相当于一个开关文件,如果要用到STM32固件库驱动标准外设,则外设驱动头文件是必不可少的,如 “stm32f10x_gpio.h”。在"stm32f10x_conf.h"中我们通过代码#include"stm32f10x_gpio.h"来实现这个操作。

 

xVECT_TAB_SRAM作用:

xVECT_TAB_SRAM看样子应该是在SRAM中运行程序的时候指定中断位置的...
KEIL中有VECT_TAB_SRAM的定义xVECT_TAB_SRAM没有 应该差不多...

点击Linker勾选Override default选项,然后点击右面浏览按钮  弹出如下对话框,点击工程目录下,打开stm32f40x_flash.icf文件,如下图所示 

弹出如下对话框,点击但工程目录下,打开stm32f40x_flash.icf文件,如下图所示

 点击Debugger,Driver选ST-LINK

 ,Interface选择SWD

点击OK,工程设置完毕

原创粉丝点击