项目的创建基本是参照教程的空项目创建进行的,可以分屏打开两个窗口对照着看,我跟教程不同的地方都会指出来。
首先我先说明一下我创建的项目配置:
单片机:STM32F407VET6
库文件:标准库
构建配置:GCC
烧录配置:openocd
由于我现在只学了标准库的使用,对hal和ll库还没什么了解,所以以后有需要的话再补充。
构建配置如果不用GCC的话,教程使用的是AC5,写的也很明白了,应该看得懂(好像说标准库不能用AC6)。
烧录配置使用openocd完全是因为我手头上只有daplink(而且openocd也可以支持很多其他的烧录器)这个更改的话应该不会有什么影响。
1.安装设置相关工具链
这里我装的是GCC和openocd,这里装的是默认进C盘,个人建议还是在这里装吧,可能去官网下的会有兼容问题
设置工具链,有个绿色的勾勾就说明能用了
2.创建空项目
这一步参照教程进行
这三个选中的文件是以我自己的理解来建立的,剩下的文件在教程里有讲,我说明一下这三个文件的作用
lib:这里存放启动文件和外设库文件,后面要添加的库也可以放在这里
link:这个是使用GCC编译器的时候才要用到的,存放.ld文件
user:这里就放主函数还有一些配置文件吧
这几个文件按自己的理解来放吧,我也是跟着一些创建keil工程学来的
3.复制库文件
我这里用的是比最新版本低一个版本的标准库,最新版我不会弄,一堆报错(用keil也有一堆报错)。
将库里的Libraries\ STM32F4xx_StdPeriph_Driver文件夹整个复制到lib文件夹内,然后创建一个CMSIS的文件夹用于存放启动文件。
STM32不同系列单片机的标准库文件目录名字有少许不用,但是大体结构分类是差不多的
将Libraries\CMSIS\Device\ST\STM32F4xx\include文件夹内两个文件复制到CMSIS文件夹内
STM32不同系列单片机的标准库文件目录名字有少许不用,但是大体结构分类是差不多的
将Libraries\CMSIS\Device\ST\STM32F4xx\Source\Templates文件夹内的system_stm32f4xx.c文件复制到CMSIS文件夹内
STM32不同系列单片机的标准库文件目录名字有少许不用,但是大体结构分类是差不多的
将Libraries\CMSIS\Device\ST\STM32F4xx\Source\Templates\gcc_ride7内的startup_stm32f40_41xxx.s文件复制到CMSIS文件夹内
注意这里在Templates文件夹下面有很多子文件夹,它们的名称分别对应不同编译器下的启动文件,我这里用的编译器是GCC所以选择gcc_ride7这个文件夹内的启动文件,如果使用的是其他编译器,则自行更改
选择哪一个.s文件取决于你的单片机型号,可以参考keil建立工程时,你对应的芯片用了什么哪个.s文件
来到示例工程目录下,将Project\STM32F4xx_StdPeriph_Templates文件夹中的main.c、stm32f4xx_it.c、stm32f4xx_it.h、stm32f4xx_conf.h复制到user文件夹内
system_stm32f4xx.c不用复制,因为前面CMSIS文件夹中已经复制过了,再复制一遍会导致重复定义,报错
进入Project\STM32F4xx_StdPeriph_Templates\TrueSTUDIO这里有很多子文件夹,名字和启动文件.s那边是一样的你选择了哪个名字的.s文件你就进入相对应的文件夹内复制里面的.ld文件到link文件夹里
这里我推测,使用同一个.s文件的芯片在很多地方是兼容的,即使.ld文件名字不一样,但是其中的参数是一样的(除了需要对Flash和RAM的大小进行修改之外),所以我认为只要是和.s文件相同文件夹内无论是什么名字的.ld都可以直接套用
4.添加文件夹到项目结构中
选中lib和user两个文件添加到项目中
右键芯片支持包,选择安装CMSIS头文件
5.根据芯片型号添加 宏 到项目
这里参照keil建立工程时对应芯片所需要添加的宏进行添加
6.对构建配置进行相关设置
这里我只对GCC相关设置进行说明,AC5在教程中已经写有,可以参照
CPU类型自行去官网查找或者百度,我这里STM32F是M4架构的,需要更改
链接脚本路径选择link文件夹中的.ld文件
7.处理一些错误
将stm32f4xx_it.c文件约32行位置的#include “main.h”删掉
将stm32f4xx_it.c文件约144行位置的TimingDelay_Decrement();删掉
将system_stm32f4xx.c文件约760行的while(*);后面的分号删掉(注意,是要后面跟着大括号的才要删掉)
8.打开main.c写一段程序,保存编译
我这里写的是一段点灯程序
如果全局编译之后有和我一样未找到文件的报错,则需要在包含目录中添加user、CMSIS、inc、src文件
以上是我创建工程时的过程了,可能不同系列的芯片创建出来之后报错不同,我相信转到VSCode使用EIDE进行开发的都可以解决STM32的报错了吧,我也还只是个初学者,就是喜欢捣鼓而已
接下来是烧录配置的设置
我通过openocd使用daplink来给开发板烧录程序,只要选择对应的芯片配置和接口配置就行了(openocd还支持各种其他的烧录器)
如果程序烧录之后能够正常运行就可以将这个EIDE项目作为模板导出,方便下一次建立相同芯片工程的时候使用了
导出工程模板
右键你需要导出作为模板的项目,选择导出EIDE模板
压缩导出需要一定的时间,导出完成会在右下角有提示,并且很快消失
导出完成之后你就可以到你这个工程的根目录下找到一个后缀为.EPT的文件,将他放到你的模板库里方便下次建立工程的时候使用