一、总述% F, q! N7 t p9 | {5 J 之前买了一块STM32F407ZG的核心板,以及和它配套的TFT显示屏,学了很久了吧。最近同学让我教他STM32开发,于是就想写点东西总结一下。 ! U4 {3 ]3 m# C2 Y# X+ e- j! q 我习惯用的开发环境是Keil,软件及开发环境的安装网上有很多例子,在这里就不再细说了。那么接下来,就是学习如何新建一个STM32工程。(为了减小开发负担,在这里使用了STM32F4的StdPeriph固件库) / k5 n7 E, {/ e 二、第一步——建目录 首先,新建一个文件夹,名字就是工程的名字,这里工程名为STM32F407ZG,如下图:(另一个文件stm32f4_dsp_stdperiph_lib.zip就是STM32F4的StdPeriph固件库) ) G6 K: s5 y& o0 [ 然后,进入工程文件夹内部,新建Driver、Hardware、Libraries、Project四个目录,如下图所示: 7 Z5 G! Q" c A& U, \8 \
三、第二步——拷贝文件 首先,将固件库压缩文件/STM32F4xx_DSP_StdPeriph_Lib_V1.4.0/Libraries/下的全部文件解压到刚刚新建的STM32F407ZG/Libraries目录下,如下图: ( m. O4 k! v8 q' B, K) M 然后,将固件库压缩文件/STM32F4xx_DSP_StdPeriph_Lib_V1.4.0/Project/STM32F4xx_StdPeriph_Templates/目录下的main.c、main.h、stm32f4xx_conf.h、stm32f4xx_it.c和stm32f4xx_it.h解压到刚刚新建的STM32F407ZG/Driver目录下,如下图: 6 M, E: d) b5 F5 s5 b' f, C0 g + }; Q s; y' v9 X8 t; S2 O( ? 如果有keilkilll.bat文件,拷贝至工程文件夹下,也可以右键->新建文本文件,双击打开,加入以下内容,然后再更改文件名为keilkilll.bat。这个文件用于删除编译中间文件,减小磁盘使用空间,一般上传源代码前都要运行一遍使上传文件变少。这一步可以省略。( G! Y4 I1 K) Q8 N' h
8 E; f5 W6 M& Q; J' } 四、第三步——MDK建工程 打开Keil uVision5软件,点击菜单->Project->New uVision Project...,目录选择到我们的新建的STM32F407ZG/Project/目录下,输入工程名,点击保存,如下图:4 ?- N8 u1 U# Q* L% D7 c6 B1 ^ P7 F% @8 q3 A$ W* q2 g 接下来进入选择芯片对话框,选择Software Packs,然后芯片树中选择STMicroelectronics->STM32F4 Series->STM32F407->STM32F4407ZG,然后,点击OK,把后来弹出来的窗口关了,没有弹出来的就算了。0 Y, t6 a$ n: M1 w1 c 五、第四步——MDK项目配置 点击下图框出来的魔术棒图标,切换到C/C++选项卡,填入define内容 USE_STDPERIPH_DRIVER STM32F40xx,然后,点include paths后面的按钮,进入include设置窗口。 8 u+ {( c$ T. P2 f3 j 3 J, b! B9 P! r8 @0 q6 E( Y% P 双击列表,点击后面的按钮进入目录选择,或者手动添加,加入下面的目录信息:点击OK,回到主页面。8 O6 Y2 V3 y. X$ p3 _% |5 I 4 j. f1 C4 r6 J7 f. l/ G
再点击下图框出来的三个正方形的图标,在Groups下添加CMSIS、Driver、Hardware、Library目录: & P; P( K4 [. l& t 在CMSIS目录下,添加..\Libraries\CMSIS\Device\ST\STM32F4xx\Source\Templates\文件夹下的文件system_stm32f4xx.c、arm\startup_stm32f40xx.s 在Driver目录下,添加..\Driver\文件夹下的文件main.c、stm32f4xx_it.c . v* r( b0 d0 k# U. K g6 T3 T) N 在Library目录下,添加..\Libraries\STM32F4xx_StdPeriph_Driver\src\文件夹下的全部文件 4 u- v9 f: a7 d8 G2 C# m; H* E3 Z 由于新学板子,还没有用到其他模块,所以Hardware为空。* ?! z- W2 I" Y! @; X; [, \ 最后,点击OK,返回主页面。) L9 K" ^3 ]; l# P* D* |8 h 六、第五步——编译程序 点击下图中的编译按钮,进行编译。. G" ]# p5 I9 _' y# d3 r1 m$ C 2 {% m& r% t( D, C( X$ w9 b% U ) @* ^3 Y" ]7 j; a+ m 发现在编译stm32f4xx_fmc.c文件时出错,回到上一步中,把Library目录中的stm32f4xx_fmc.c删掉,再编译一下,错误没有了。4 u: a6 ^ }' W: j ) s9 @; L+ {2 I9 F6 p8 F3 R 至此,新建工程圆满完成。2 N* k, Q) B' f & s$ `( H$ l5 u/ V |
STM32固件库分享,超全系列整理
【中文文档】AN3965_STM32F40x和STM32F41x基于串口的IAP
STM32F4-DISC 实现USB主机(U盘)和USB设备(虚拟串口)自动切换
STM32F4中文用户手册
基于STM32F407的FreeRTOS阶段性的总结(13)
STM32F400、STM32F402 Cortex-M4超值单片机
基于STM32F407的FreeRTOS获取各任务运行时间及占用情况(4)
基于STM32F407的FreeRTOS任务的挂起与恢复(3)
基于STM32F407的FreeRTOS任务的创建与删除经验分享(2)
基于STM32F407的FreeRTOS环境搭建经验分享(1)