STM32F407开发板用户手册第4章 STM32F407工程模板建立(MDK5)

Posted armfly

tags:

篇首语:本文由小常识网(cha138.com)小编为大家整理,主要介绍了STM32F407开发板用户手册第4章 STM32F407工程模板建立(MDK5)相关的知识,希望对你有一定的参考价值。

最新教程下载:http://www.armbbs.cn/forum.php?mod=viewthread&tid=93255

第4章   STM32F407工程模板建立(MDK5)

本章教程为大家介绍如何创建MDK5工程,配置方法以及经常用到的一些配置项。

4.1 初学者重要提示

4.2 第1步,创建工程文件夹

4.3 第2步,创建新工程

4.4 第3步,设置工程名和工程分组名

4.5 第4步,添加工程文件

4.6 第5步,Target Options配置

4.7 第6步,最后一步验证是否创建成功

4.8 MDK的字体,多核并行编译,语法提示等设置

4.9 总结

 

 

4.1   初学者重要提示

  1.   KEIL官方有一个专门的MDK上手文档mdk5-getting-started,在MDK的安装目录里面,坛友翻译了整个文档:http://www.armbbs.cn/forum.php?mod=viewthread&tid=31288
  2.   MDK5的工程创建过程还是比较重要的,务必实际上手操作一遍。

4.2   第1步,创建工程文件夹

创建一个文件夹,里面包含如下文件(直接将跑马灯例子的Project文件里面内容全部删除,然后整个工程复制进来即可)。

技术图片 

  •   Doc文件夹

用于记录例程的修改记录和例子简介。

  •   Libraries文件夹

在第一章详细介绍从官网的下载方法。

  •   Project文件夹

这个是本章的重点,在这个文件夹里面再建立两个文件夹,MDK-ARM(uV5)文件夹里面用于存放MDK工程,EWARMv8文件夹用于存放IAR工程,方便以后创建IAR的工程。

  •   User文件夹

这个是要用户提供的,开发板已经都提供好,bsp文件夹里面是开发板各个外设的驱动,segger文件夹是硬件异常分析代码。

  •   删除目标文件.bat

这个是批处理文件,用于删除MDK和IAR工程编译后生成的obj和list临时文件。

4.3   第2步,创建新工程

打开MDK,选择Project ->New uVision Project:

技术图片 

工程名设置为project:

技术图片 

选择器件:STM32F407IGTx

技术图片 

点击OK后弹出如下界面,点击Cancel取消,当前我们还不使用RTE环境创建。

技术图片 

4.4   第3步,设置工程名和工程分组名

默认新建的工程是下面这样的:

技术图片 

打开Manage Project Items,双击Targer1修改名字为Flash,或者任何其它方便自己管理的名称,设置完毕后点击OK。

技术图片 

可以看到已经修改为Flash:

技术图片 

再次打开Manage Project Items,添加如下分组内容:

技术图片 

可以看到左侧工程列表已经更新:

技术图片 

4.5   第4步,添加工程文件

添加方法跟第2步,第3步一样,可以通过Manage Project Items添加:

技术图片 

也可以直接双击工程列表里面的分组添加(注意文件类型里面推荐设置为ALL files所有文件):

 技术图片

  •   添加User分组需要的文件

技术图片 

main.c文件位于文件夹User,实现了一个简单的跑马灯效果。

  •   添加BSP分组需要的内容

技术图片 

bsp.c 位于路径Usersp,主要用于时钟和外设初始化。

bsp.h位于路径Usersp,此文件是各种头文件的集中汇总贴,方便管理。

bsp_led.c位于路径Userspsrc,用于LED驱动。

bsp_key.c位于路径Userspsrc,用于按键驱动。

bsp_timer.c位于路径Userspsrc,用于软件定时器组和微妙级单次延迟。

bsp_fmc_io.c位于路径Userspsrc,用于IO扩展,这里LED要用到。

bsp_uart_fifo.c位于路径Userspsrc,用于8串口FIFO驱动。

stm32f4xx_it.c位于路径Usersp,用于部分系统中断服务程序。

  •   添加MDK-ARM分组需要的内容

技术图片 

startup_stm32f407xx.s 位于路径LibrariesCMSISDeviceSTSTM32F4xxSourceTemplatesarm,主要用于堆和栈空间设置,中断向量表也在这个文件。

  •   添加HAL_Driver分组需要的内容

技术图片 

stm32hf4xx_hal_conf.h位于路径Usersp,主要用于HAL库的配置。

       其它文件路径:LibrariesSTM32F4xx_HAL_DriverSrc,用到什么外设添加什么驱动文件即可,有些外设驱动跟DMA也有关联,直接添加进来即可。

  •   添加CMSIS分组需要的内容

技术图片 

system_stm32f4xx.c位于路径LibrariesCMSISDeviceSTSTM32F4xxSourceTemplates,主要用于复位RCC相关寄存器和中断向量表位置设置。

  •   添加SEGGER/HardFault分组需要的内容

技术图片 

这两个文件位于路径:UserseggerHardFaultHandlerMDK,主要用于硬件异常分析。

  •   添加Doc分组需要的内容

技术图片 

这两个文件位于Doc文件夹,主要用于说明例程的功能和更新记录。

4.6   第5步,Target Options配置

MDK的配置基本都集中在Target Options对话框里面:

技术图片 

4.6.1      Device选项

这个选项不用管,因为我们在创建的时候已经选择了STM32F407IGTx

技术图片 

4.6.2      Target选项

技术图片 

  1. 因为我们一般不用软件仿真,这个选项不用管,也不推荐大家用MDK提供的软件仿真,问题比较多。
  2. 选择编译器,使用默认的AC5即可。当前AC6支持的还不够好,仅MDK自家的软件都支持了,第三方的问题稍多。
  3. 我们这里使用微库MicroLib,这个库针对嵌入式应用,MicroLIB做了深度优化,比使用C标准库所需的RAM和FLASH空间都大大减小。比如调用:<math.h>,<stdlib.h>,<stdio.h>,<string.h>。技术图片更多这方面的信息可以看KEIL官网:http://www.keil.com/arm/microlib.asp
  4. STM32F407支持单精度浮点,所以这里选择Single Precision单精度浮点。
  5. STM32F407的Flash首地址是0x0800 0000,大小0x100000,即1MB。
  6. 默认的RAM空间首地址0x2000 0000,大小0x20000,即128KB。

4.6.3      Output选项

技术图片 

  1. 用于存放MDK编译过程中生成的obj临时文件路径,MDK在创建的时候已经帮我们创建好文件夹Objects,这里无需修改,使用默认即可。
  2. Debug Information表示调试信息,选上。
  3. Create HEX File表示是否生成hex文件,选上。
  4. Browse Information表示是需要go to def的支持,使用HAL库话,推荐先不要选上,因为MDK5使用AC5编译HAL库时间比较长.

 技术图片

4.6.4      Listing选项

 技术图片

  1. 用于存放MDK编译过程中生成的list临时文件路径,MDK在创建的时候已经帮我们创建好文件夹Listings,这里无需修改,使用默认即可。
  2. 是否生成*.lst文件,选上。
  3. 查看MAP文件要用上,全部选上。

4.6.5      User选项

技术图片 

这个选项基本用不上,可以不用管,主要是用来指定编译之前和编译之后执行的用户程序。对于本教程配套的例子来说在这里添加了一个批处理功能,用来实现Objects文件夹里面的hex文件复制到路径ProjectMDK-ARM(uV5)里面,方便查找。

技术图片 

4.6.6      C/C++选项

技术图片 

1、预定义宏

USE_HAL_DRIVER 表示使用HAL库。

STM32F407xx 表示使用F407系列。

USE_FULL_LL_DRIVER表示使用LL库。

2、选择0级优化,优化等级低,方便调试。

  •   如何做MDK编译器的代码最小优化和性能最佳优化

MDK之前做的应用笔记:http://www.armbbs.cn/forum.php?mod=viewthread&tid=1794

选项One ELF Section per Function用于删除工程中没有用到的冗余函数。

3、使用C99规范,在第9章有介绍。

4、添加路径,把用到的头文件路径包含进来,点击最右侧的小按钮,弹出如下界面进行添加即可:

技术图片 

4.6.7      Asm选项

技术图片 

这个选项用不到,不用管。

4.6.8      Linker选项

 技术图片

这个选项用不到,不用管。

4.6.9      Debug选项

 技术图片

  1. 软件仿真不推荐大家用,问题比较多。
  2. 硬件仿真,这里选择的JLINK,大家根据自己用的那种调试器选择相应型号即可。

 

具体的调试设置在下一章有详细说明,本章主要是保证创建的工程能够正常编译。

4.6.10 Utilities选项

技术图片 

这个选项主要用于编程工具选择,大家根据自己用的那种下载器选择相应型号即可。

Update Target before Debugging表示调试前更新芯片的程序。

4.7   第6步,最后一步验证是否创建成功

点击全编译:

技术图片 

编译结果:0错误,0警告,编译成功。

技术图片 

4.8   MDK的字体,多核并行编译,语法提示等设置

这里将MDK经常用到的设置做个说明。

4.8.1      Tab Size设置

教程配套例子的Tab size要设置为4,否则代码显示不整齐:

选择此图标:

技术图片 

弹出的窗口里面设置Tab size为4:

技术图片 

4.8.2      使能多核并行编译

电脑有几个核,都选上,加快编译速度。

选择此图标:

 技术图片

我这里是四核:

技术图片 

4.8.3      字体设置

推荐大家用下微软雅黑,而且可以防止复制粘贴的时候出现乱码问题,字体下载在此贴:http://www.armbbs.cn/forum.php?mod=viewthread&tid=2293

安装微软雅黑的时候要注意,电脑端默认自带了一个微软雅黑,安装的时候会出现字体是躺着的。

 

选择此图标:

 技术图片

选择中文简体:

技术图片 

选择安装微软雅黑字体:

技术图片 

效果如下:

 技术图片

4.8.4      语法提示和语法检测功能

选择此图标:

 技术图片

MDK的语法提示和语法检测功能还行,大家可以根据需要开启:

技术图片 

4.9   总结

对于初学者来说,务必要实际动手操作一遍,以后移植其它程序代码大有裨益。

 

以上是关于STM32F407开发板用户手册第4章 STM32F407工程模板建立(MDK5)的主要内容,如果未能解决你的问题,请参考以下文章

STM32F407开发板用户手册第13章 STM32F407启动过程详解

STM32F407开发板用户手册第20章 STM32F407的GPIO应用之无源蜂鸣器

STM32F407开发板用户手册第21章 STM32F407的NVIC中断分组和配置(重要)

STM32F407开发板用户手册第8章 STM32F407的终极调试组件Event Recorder

STM32F407开发板用户手册第30章 STM32F407的系统bootloader之串口IAP固件升级

STM32F407开发板用户手册第23章 STM32F407的USART串口基础知识和HAL库API