最近正好使用到F407的开发板,将一些问题总结一下。

软件包安装

看到网上大部分教程都是采用了自行去keil官网下载软件包安装的形式,个人认为有点落后于时代了,并且有点麻烦。
这里介绍使用keil自带软件包更新工具进行软件包的安装。
打开keil,点击pack installer图标
pack-installer1
会弹出如下页面。在此页面选择所需使用的芯片,在右侧即可看到这款芯片可以使用哪些包,点击install安装即可。
pack-installer2

使用在线固件库

正点原子和野火的教程都是使用了工程模板,里面包括了CMSIS、固件库、启动文件等一系列可能会使用到的文件。但实际项目中,并不一定会用到所有外设,多余文件的存在会拖慢编译速度,尤其是在使用V5编译器的时候;同时还会使工程臃肿,占用较大空间。
而keil自带的在线固件库则很好的解决了这个问题,它将所有固件库、CMSIS文件全部存放在了keil安装目录下,当工程需要使用时,会链接到工程中,这个链接不会转移文件,故可以减小工程文件大小。另外,在开发时,可以随时添加使用的外设,而不是一次性全部添加,大大加快了编译的速度。
使用方法如图:
online CMSIS

使用V6编译器及最新版标准外设库

在使用F4的软件包时发现其没有包含固件库,只有HAL库相关文件,故前往意法半导体官网下载了最新库文件,解压后得到一系列文件。
我们需要用到的文件及文件夹如下:

Libraries\STM32F4xx_StdPeriph_Driver\inc
Libraries\STM32F4xx_StdPeriph_Driver\src
Libraries\CMSIS\Device\ST\STM32F4xx\Include\stm32f4xx.h 
Project\STM32F4xx_StdPeriph_Templates\stm32f4xx_conf.h
Project\STM32F4xx_StdPeriph_Templates\stm32f4xx_it.c
Project\STM32F4xx_StdPeriph_Templates\stm32f4xx_it.h

(注:这里一定要使用刚解压出来的,不要使用keil自带的或野火等例程里的,否则会出现问题,因为在不同版本的文件中,寄存器宏定义有所区别)
CMSIS及启动文件可以使用keil软件包自带的。
之后正常创建工程,但注意将上述文件放置在工程文件夹。参考如下:
V6.16 online CMSIS
V6.16 complier
V6.16 libraries
编译发现大量重定义警告:
V6.16 warnings
问题出在stm32f4xx.h文件当中,打开文件,看到此处:
V6.16 redef

上下两部分宏定义重复,不知道官方为何如此设置,将下方选择的部分注释掉即可消除warning。
另外,可能还会遇到找不到main.h以及未声明TimingDelay_Decrement()的问题,可以将stm32f4xx_it.c文件中的如下内容注释掉:

//#include "main.h"

void SysTick_Handler(void)
{
  //TimingDelay_Decrement();(只注释此处,外部函数不注释)
}