第一阶段:准备相关文件

开发环境:keil uVision5
芯片:STM32F412ZGT6

A. STM32F4芯片支持包的下载

去Keil官网下载(https://www.keil.arm.com/packs/stm32f4xx_dfp-keil/versions/)F4系列的芯片支持包,下载链接(https://www.keil.com/pack/Keil.STM32F4xx_DFP.3.1.1.pack),F4系列的芯片支持包都一样

B.TM32F4标准外设库下载

去ST官网下载(https://www.st.com.cn/https://www.st.com.cn/zh/embedded-software/stsw-stm32065.html?dl=redirecthttps://www.st.com.cn/
也可以下载STM32Cube MCU包,用于STM32F4系列(https://www.st.com.cn/zh/embedded-software/stm32cubef4.html?dl=redirect

第二阶段:新建5个文件夹。

CMSIS:用于存放STM32的CPU核心相关的文件

Library:存放STM32的外设库文件

Driver:存放芯片级的驱动文件

User:用户的文件夹,存放如main..c、Global.h、用户新建的其他文件等等

Project:MDK工程相关的目录,存放编译生成的中间文件,KEIL工程相关的文件

第三阶段:复制标准库相关文件

1.复制CMSIS里面的文件,这些都在固件库的LibrariesCMSIS目录下

Libraries\CMSIS\Device\ST\STM32F4xx\Include下的system_stm32f4xx.h和stm32f4xx.h
system_stm32f4xx.h:系统头文件,主要用来申明系统及总线时钟。
stm32f4xx.h:外设访问的头文件,主要是结构体定义和宏定义。

Libraries\CMSIS\Device\ST\STM32F4xx\Source\Templates下的system_stm32f4xx.c

Libraries\CMSIS\Device\ST\STM32F4xx\Source\Templates\arm下的startup_stm32f40_41xxx.s或startup_stm32f412xg.s其中一个

Libraries\CMSIS\Include下的core_cm4.h和core_cmSimd.h和core_cmFunc.h和core_cmInstr.h

这样CMSIS文件夹中会有八个文件了。

core_cm4.h:是arm公司提供的M4内核接口,对所有cm4内核芯片一样,不需要修改,定义了一些寄存器和函数。
core_cmFunc.h:内核函数
core_cmInstr.h:内核指令
core_cm4_simd.h:编译器指定的单指令多数据流(SIMD),这个只有ARMv7架构才有。
startup_stm32f40_41xxx.s:启动文件,主要是引导进入main函数。
 

2.复制Library里的文件

把Libraries\STM32F4xx_StdPeriph_Driver下的src目录和inc目录复制过去

3.最后一步复制main到User里的文件

Project\STM32F4xx_StdPeriph_Templates下的main.c和main.h、stm32f4xx_conf.h、stm32f4xx_it.c和stm32f4xx_it.h
stm32f4xx_conf.h:外设驱动配置文件,包括外设头文件。
stm32f4xx_it.h:中断服务函数。

第四阶段:建立工程

还有一点要注意!!!这里有个文件 stm32f4xx_fmc.c 比较特殊。这个文件是 STM32F42 和 STM32F43 系列才用到,所以我们这里我们不要添加 stm32f4xx_fmc.c在Library库中

第五阶段:设置工程参数

1.魔术棒→Target 选项卡里面,ARM Compiler需要设置成V5版本编译器

2.设置Output到Output目录

2.点击“C/C++”选项,设置全局宏定义,在Define中输入“USE_STDPERIPH_DRIVER,STM32F412xG”。


如果CMSIS文件中选择startup_stm32f40_41xxx.s,那就需要在全局宏定义中添加“USE_STDPERIPH_DRIVER,STM32F40_41xxx”


然后点击下方的按钮添加文件路径..\SMSIS;..\User;..\Library\inc。

选择-O0优化等级。

设置C99 Mode模式。
 

第六阶段:编译检查

编译后报警,双击警告找到指定位置,把报警地方注释就OK了!!!

可以选择注释一个,注释那个有什么不同影响欢迎交流
也可参考:https://blog.csdn.net/qq_48306572/article/details/143451395
STM32F4工程搭建教程:从零开始到实战模板-CSDN博客

【NUCLEO-F412ZG试用体验】用标准库建立STM32F412ZG工程与模板分享 - STM32/STM8技术论坛 - 电子技术论坛 - 广受欢迎的专业电子论坛!

Logo

有“AI”的1024 = 2048,欢迎大家加入2048 AI社区

更多推荐