
一、 首先在电脑的某个目录下创建一个空文件夹用来存放工程文件。创建好后在该文件目录下分别创建CORE 、FWLIB、OBJ、SYSTEM、USER等五个子文件夹。至于这些文件夹名字,实际上是可以任取的,我们这样取名只是为了行业规范。![]() 1 c6 u, M7 R2 h. m& W0 F, [* [) G9 o. ^ 二、打开keil软件,点击 Keil 的菜单: Project –>New Uvision Project,保存时将目录定位到自己创建的文件下的USER子目录下: ![]() ![]() 三、接下来会出现一个选择 Device 的界面,就是选择我们的芯片型号,我们选择STM232F407ZE(如果使用的是其他系列的芯片,选择相应的型号就可以了)特别注意: 一定要安装对应的器件支持包才会显示这些内容)。 ![]() ![]() 这里是一些组件,直接点击OK即可,这样工程文件就算初步建立完成 四、打开TEST文件下的USER子目录下可见包含 2 个文件,Listings 和 Objects 文件夹是 MDK 自动生成的文件夹,用于存放编译过程产生的中间文件,这里可以自由设置,到时候会定位到OBJ里面去,这两个文件可不用理他 ) l( q9 k2 }! K, v9 |" n. s ![]() + G# \7 z1 e1 Z' n! t. K g 五、现在打开官方固件库,定位到\STM32F4xx_DSP_StdPeriph_Lib_V1.4.0\Libraries\STM32F4xx_StdPeriph_Driver下面,. ]0 O# C9 t! h4 \( Z 将目录下面的 src,inc 文件夹 copy 到我们刚才建立的 FWLib 文件夹下面。* n2 {5 a4 g4 u% o% S! {& @ ![]() ) i6 p% Q4 I; X2 a( ^% N- `, n 六、同样定位到 \STM32F4xx_DSP_StdPeriph_Lib_V1.4.0\Libraries\CMSIS\Device\ST\STM32F4xx\Source\Templates\arm下面,将文件 startup_stm32f40_41xxx.s复制到 CORE 目录下面。' x# w" _+ Y8 X# O4 G0 x ![]() . b3 K* H; h: Z; I 然后定位到目录\STM32F4xx_DSP_StdPeriph_Lib_V1.4.0\Libraries\CMSIS\Includ, 将 里 面 的 四 个 头 文 件 :core_cm4.h、core_cm4_simd.h、core_cmFunc.h 以及core_cmInstr.h 同样复制到 CORE 目录下面。 0 D1 {5 y; _& c, H0 p ![]() 七、继续定位到目录: STM32F4xx_DSP_StdPeriph_Lib_V1.4.0\Libraries\CMSIS\Device\ST\STM32F4xx\Include将里面的 2 个头文件 stm32f4xx.h 和 system_stm32f4xx.h 复制到 USER 目录之下。 这两个头文件是STM32F4 工程非常关键的两个头文件。/ J" Q ]8 p& v1 `( V/ i 3 H! t3 L; n ]' f6 D! j6 y ![]() , A5 R5 ?2 E. \0 f: X 2 U1 P2 o; A5 A 然后进入目录 \STM32F4xx_DSP_StdPeriph_Lib_V1.4.0\Project\STM32F4xx_StdPeriph_Templates, 将 目 录 下 面 的 5 个 文 件 main.c , stm32f4xx_conf.h , stm32f4xx_it.c , stm32f4xx_it.h ,system_stm32f4xx.c 复制到 USER 目录下面。 ![]() 9 u# j8 M: c3 c$ t* P8 U7 h3 i 2 E/ \9 R- B- l/ b& q" v: Y 最后USER文件如下图所示:* `5 a3 S0 Z$ V. Z' Z" m ![]() 八、完成以上步骤后,下面我们需要把这些文件加入我们的工程中去。右键点击 Target1,选择 Manage Project Items,如下图: * A5 s" K9 d2 r0 ?# g4 ?3 \ ![]() # X9 R5 Z9 P8 B4 {6 G2 w 7 p/ `, c/ Q+ U+ `1 h 九、建立三个Groups: USER,CORE,FWLIB。然后点击 OK即可 8 C1 d( f ~9 N& K% I( g' q+ A ![]() 十、接上一步,添加需要的文件选择 FWLIB,然后点击右边的 AddFiles,定位到我们刚才建立的目录\GECLIB\src 下面,将里面所有的文件选中(Ctrl+A),然后点击 Add,然后 Close.可以看到 Files 列表下面包含我们添加的文件。 ![]() / S+ {3 Y; T3 I8 ]4 |& T, l2 G 注意: 4 J, s4 c. R, C1 f6 u% u 1、例若只用到GPIO的配置,可以只选择stm32f4xx_gpio.c这样可以减少工程的代码量,提高编译的速度。. n) l1 [: j% a9 ]$ h5 r5 T* e 2、有个文件stm32f4xx_fmc.c 比较特殊。这个文件STM32F42 和 STM32F43 系列才用到,所以我们这里要把它删掉(注意是 stm32f4xx_fmc.c 要删掉,不要删掉stm32f4xx_fsmc.c)。+ H8 ~% ~' K# o$ ~' `. ?: L 十一、用同样的方法,我们CORE下面需要添加的文件为 startup_stm32f40_41xxx.s(注意:你需要选择文件类型为All files才能看得到这个文件),USER 目录下面需要添加的文件为 main.c, stm32f4xx_it.c,system_stm32f4xx.c。最后点击 OK。 ( f' j! O, T0 t# t8 z3 u ![]() / n' ~; S" F! e$ @7 j & C; P; R' L0 Q/ q 十二、进入设置界面设置头文件存放路径,如果没有设置头文件路径,那么工程会出现报错,头文件路径找不到 ![]() ![]() 我们需要添加的头文件路径包括:\CORE, \USER\以及\GECLIB\inc。若需要添加到自己建立的头文件,也需要做路径的添加0 _2 `- w4 u8 `; c7 D9 M ![]() 十三、STM32F40 系列的工程,还需要添加一个全局宏定义标识符。添加方法是点击魔术棒之后,进入 C/C++选项卡,然后在 Define 输入框连输入:STM32F40_41xxx,USE_STDPERIPH_DRIVER。注意这里是两个标识符 STM32F40_41xxx和 USE_STDPERIPH_DRIVER,他们之间是用英文的逗号隔开的,请大家注意。8 F# y5 Q+ ]' C& ^( z0 L3 t ![]() . \# p4 M! }- ^" T, G 十四、在做编译工程之前我们首先要选择编译中间文件编译后存放目录。方法是点击魔术棒,然后选择“Output”选项下面的“Select folder forobjects…”,然后选择目录为我们上面的新建的 OBJ 目录。然后再OBJ目录下就可看到我们需要的程序.hex文件了。(上面第四步所说过). r9 J; @: R) U/ ]/ S $ R0 ~8 G* L# G3 A ![]() 十五、在编译之前,我们先把 main.c 文件里面的内容清空,编写自己的代码与此同时,我们要将 USER 分组下面的 stm32f4xx_it.c 文件内容清空。 或者删掉其中的 32 行对main.h 头文件的引入以及 144 行 SysTick_Handler 函数内容% p, a1 O# i$ {" e- O 1 P/ ^& Q' |5 M ![]() . N; \4 R7 M8 `) z; T$ v6 @" k4 A ![]() 下面我们点击编译按钮 编译工程,没有任何错误和警告,那工程文件就算完整的建立完成了。8 D, L- n6 ?* ]. n 十五、最后,打开工程文件会看到以下文件信息,这里不做一一介绍 8 |/ t j( c4 I0 l" Z4 `/ C 注意:LIB里面的文件可根据自己需要进行增加或删除 ![]() 如果是控制简单的GPIO输入或者输出,可以使用以上的这些文件就足够了。! p' \2 r/ K M$ U |
实战经验 | Keil工程使用NEAI库的异常问题
STM32 ISP IQTune:真正零门槛的免费ISP调整软件
【经验分享】STM32 新建基于STM32F40x 固件库的MDK5 工程
意法半导体MCU双供应链策略,打消中国客户后顾之忧
【经验分享】基于STM32使用HAL库实现USB组合设备CDC+MSC
2024意法半导体工业峰会:赋能智能电源和智能工业,构筑可持续未来
ST推出灵活、面向未来的智能电表通信解决方案,助力能源转型
意法半导体 x Qu-Bit Electronix:推动新一轮的数字声音合成革命
从STM32 MPU产品看嵌入式系统中微处理器的新变化
【Hot!】STM32全系列开发板都支持Arduino开发,你知道吗?