1. 前期准备
1.1 下载 STM32Cube 固件包
1.1.1 ST官网搜索STM32Cube
首先进入ST官网,在搜索栏输入 STM32Cube
找到 STM32CubeF4 点击进去
在这里可以选择版本进行下载,这里我选择1.26.0(后续不使用官方的因为太冗杂了,这里只是作演示用)
选择ACCEPT(若点击后直接开始下载了,则不用管后面的步骤,直接解压即可)
输入自己真实的邮箱地址,然后点击下载
我们可以在邮件中收到这样的一封邮件,然后点击下载
下载完成后解压
1.1.2 正点原子资料
A 盘→8,STM32 参考资料→1,STM32CubeXX固件包
1.2 搭建开发环境
2. 新建寄存器版本MDK工程
首先新建一个文件夹作为项目的根目录,文件夹名字可以自定义,我使用 Template 作为名字,
如图所示
2.1 新建工程文件夹
需要新建下面 5 个文件夹
文件夹名称 | 作用 |
---|---|
Drivers | 存放与硬件相关的驱动层文件 |
Middlewares | 存放中间层文件 |
Output | 存放工程编译输出文件 |
Projects | 存放 MDK 工程文件 |
User | 存放 HAL 库用户配置文件、main.c、中断处理文件,以及分散加载文件等 |
也可以新建一个 readme.txt,最后层级结构如下图所示
2.1.1 Drivers
文件夹名称 | 作用 |
---|---|
BSP | 存放开发板板级支持包驱动代码,如各种外设驱动 |
CMSIS | 存放 CMSIS 底层代码,如启动文件(.s文件)等 |
SYSTEM | 存放正点原子系统级核心驱动代码,如 sys.c、delay.c 和 usart.c 等 |
BSP文件夹需要自己新建,CMSIS 和 SYSTEM 通过拷贝得到,最后的文件夹目录如下图所示
CMSIS 和 SYSTEM 我们可以随便打开一个正点原子的例程(注意是寄存器版本)拷贝过来,这里就不做演示了
2.1.2 Middlewares
该文件夹用于存放正点原子和其他第三方提供的中间层代码(组件/Lib 等), 如: USMART、MALLOC、 TEXT、 FATFS、 USB、 LWIP、各种 OS、各种 GUI 等
2.1.3 Output
该文件夹用于存放编译器编译工程输出的中间文件,比如: .hex、 .bin、 .o 文件等
2.1.4 Projects
该文件夹用于存放编译器(MDK、 IAR 等)工程文件,我们主要用 MDK,为了方便区分, 我们在该文件夹下新建: MDK-ARM 文件夹,用于存放 MDK 的工程文件
2.1.4 User
该文件夹用于存放用户编写的代码,如: main.c 等
2.2 新建工程框架
2.2.1 新建工程
打开 Keil5 ,在上面的工具栏中找到 Project ,然后按照下图操作
然后选择刚刚新建的工程文件夹的 Projects 目录,输入项目名然后保存
2.2.2 选择主控型号
在选择型号的地方选择 STM32F407ZG ,如果这里没有这个型号说明开发环境没有搭建好(没有安装 STM32F4 的 Pack )
这里是让配置一些东西,我们不需要配置直接点击 Cancel
2.2.3 删除文件夹
我们打开之前新建工程的 Projects 目录,发现 Keil5 新建了很多的文件夹/文件
文件夹名称 | 作用 |
---|---|
DebugConfig | 用于存放调试设置信息文件(.dbgconf),不可删除! |
Listings | 用于存放编译过程产生的链接列表等文件 |
Objects | 用于存放编译过程产生的调试信息、.hex、预览、.lib文件等 |
Listings和Objects在后面需要设置到Output文件夹中,所以在这里给删掉,删掉后如下图所示
2.3 添加文件
2.3.1 设置工程名和分组名
点击下图红框中的按钮
在弹出来的窗口中,按照下图的方式设置好工程名字和分组名
然后在 Startup 分组中点击 Add Files
2.3.2 添加启动文件
在下图的层级结构中找到 startup_stm32f407xx
如果打开文件夹没有发现 startup_stm32f407xx ,则在文件类型的地方选择 All files
然后我们可以在左侧看到添加进来的启动文件
我们用不到编译器的内存管理函数,为节省内存,将 Heap_Size 改成 0,如下图
寄存器代码不需要调用SystemInit函数,因此修改Reset_Handler函数,去掉SystemInit调用,如下图(如果是复制正点原子例程的 CMSIS 则不需要修改,因为他已经修改好了)
2.3.3 添加 SYSTEM源码
最后的工程结构如下(readme是顺手加进去的)