在Keil MDK中创建STM32F4系列的工程模板(标准外设库)
一、前往ST官网下载标准外设库
ST 官网地址 https://www.st.com/content/st_com/en.html
如无法下载,请先注册并登陆ST账号,然后再尝试下载。
二、根据个人风格创建文件夹目录
如:
BSP 目录存放板级支持包
Doc 目录存放文档资料
App 目录存放用户应用代码
Library 目录存放官方标准库
Custom 目录存放自定义库文件
Thirdparty 目录存放第三方库文件
CMSIS 目录存放内核头文件
Project 目录存放工程文件
OBJ 目录存放编译中间文件
三、创建MDK工程,创建分组
1)创建新的工程文件,并根据个人习惯保存在所需目录;
2)选择合适的芯片型号(需已安装好相应的芯片包);
3)点击“管理工程项目”,根据个人风格创建组(Groups),用于对不同类型文件或不同功能的源文件进行分组管理,一般工程下每个文件夹对应一个组(Group)比较好,不容易混乱;
四、添加系统启动必要源文件
将源文件添加到对应的组(Group),对于STM32F4系列MCU来说,必要的源文件有三个:
1、main.c(编写我们的main函数)
2、startup_stm32f4xx.s(启动文件,用于初始化堆栈和中断向量表,根据实际所用型号选择对应的启动文件)
STM32F4xx_DSP_StdPeriph_Lib_V1.8.0\Libraries\CMSIS\Device\ST\STM32F4xx\Source\Templates\arm
目录下存放了STMF4系列所有MCU的启动文件。
3、system_stm32f4xx.c(系统时钟配置、Flash配置及其他配置等初始化)
STM32F4xx_DSP_StdPeriph_Lib_V1.8.0\Libraries\CMSIS\Device\ST\STM32F4xx\Source\Templates
目录下存放有此文件。
五、添加头文件路径
设置头文件包含路径,将ST官方标准库中的两个include文件夹和一个inc文件夹路径添加进去即可(最好复制到工程目录相应的文件夹下)。
STM32F4xx_DSP_StdPeriph_Lib_V1.8.0\Libraries\CMSIS\Include
这个目录下是CMSIS相关的头文件
STM32F4xx_DSP_StdPeriph_Lib_V1.8.0\Libraries\CMSIS\Device\ST\STM32F4xx\Include
这个目录下是系统初始化相关的头文件
STM32F4xx_DSP_StdPeriph_Lib_V1.8.0\Libraries\STM32F4xx_StdPeriph_Driver\inc
这个目录下是片上外设模块相关的头文件
六、定义预处理符号
在C/C++选项设置中,根据实际所用型号的芯片定义对应的预处理符号,具体可参考前面下载的ST官方标准库中 STM32F4xx_DSP_StdPeriph_Lib_V1.8.0\Project\STM32F4xx_StdPeriph_Templates\MDK-ARM
路径下的readme.txt文件;
七、时钟配置
需要 特别注意 的一点是——必须根据实际使用的HSE时钟源频率来定义 HSE_VALUE 宏的值,可以在stm32F4xx.h
头文件中直接修改此宏的值,或者如步骤6所示直接定义一个预处理符号。
定义的预处理符号会先于所有文件中的宏生效
,又因stm32F4xx.h头文件中使用了 #if !defined (HSE_VALUE) 对 HSE_VALUE 宏做了防重复定义处理,所以stm32F4xx.h中的 HSE_VALUE 宏不会生效。
要使用预处理符号的方式定义一个宏并设置一个值,请使用 宏名=值 的语法,这相当C预处理器 #define 语句 #define 宏名 值。
修改HSE_VALUE宏的值后,还要在system_stm32F4xx.c
源文件中修改PLL预分频系数,该文件默认将SYSCLK系统时钟配置为最高支持的频率。
标准库文件默认外部晶振频率为25MHz,PLLM系数也默认为25,即默认主PLL输入时钟为1MHz。因此,假如我们实际的外部晶振频率为8MHz,则我们只需修改HSE_VALUE为8000000,同时修改PLLM为8即可配置SYSCLK系统时钟为最高频率了。