首先到官网下载对应型号的固件包:
像我的STM32F103C8T6的就下载这个:

依次打开:
.\STM32F10x_StdPeriph_Lib_V3.5.0\STM32F10x_StdPeriph_Lib_V3.5.0\Libraries\CMSIS\CM3\DeviceSupport\ST\STM32F10x\startup\arm
可以看到:

这些文件就是STM32F10X的启动文件
启动文件(startup file)是一个非常重要的文件。它的主要作用是完成单片机在启动时的初始化工作,并为 C 语言的运行时环境(runtime environment)做好准备。
启动文件是单片机程序正常运行的基础。它确保了在进入用户 main
函数之前,硬件和内存处于正确的状态,使程序可以正常工作。如果启动文件没有正确设置,可能会导致无法正确访问内存,堆栈溢出,或者中断无法正常处理等问题。
接下来去到工程文件夹下新建一个Start文件
因为如果直接放到工程的目录下就太乱了,也是因为这个操作等一下我们还有配置一下路径,因为工程只能识别到工程目录下的文件

然后把启动文件复制过来:

但是!我在工程文件添加文件时只添加了这个,虽然说其他文件也是在文件夹下的
这是为什么呢?

这就涉及到单片机的型号分类了,因为我的是属于MD这个的所以我就只添加了MD的,按照你的单片机型号来选择就可以了

接下来打开:
.\STM32F10x_StdPeriph_Lib_V3.5.0\STM32F10x_StdPeriph_Lib_V3.5.0\Libraries\CMSIS\CM3\DeviceSupport\ST\STM32F10x

把这三个文件也复制到Start文件夹中
stm32f10x.h这个文件是STM32外围设备寄存器地址描述文件,里面包含了各寄存器的地址
另外两个则是用来配置时钟的
因为STM32是由内核和内核外围的设备组成的,所以还要添加内核寄存器的描述文件
依次打开:
.\STM32F10x_StdPeriph_Lib_V3.5.0\STM32F10x_StdPeriph_Lib_V3.5.0\Libraries\CMSIS\CM3\CoreSupport

把这两个文件也放进Start文件夹下
到此为止工程的必要文件就弄完了

然后把Start文件添加到工程文件里就可以了
还记得我刚刚说的路径问题吗?
打开魔术棒:


在工程文件夹下添加一个User文件夹,用来放我们可以修改的文件,比如main函数文件
这个同理也是要在魔法棒里添加路径的

如果你想基于寄存器开发的话,新建工程文件到这里就可以了!
---------------------------------------------------------------------------------------------------------------------------------
接下来我说一下基于标准库开发的新建工程文件
依次打开:
.\STM32F10x_StdPeriph_Lib_V3.5.0\STM32F10x_StdPeriph_Lib_V3.5.0\Libraries\STM32F10x_StdPeriph_Driver\src

在工程文件夹下建立一个新文件夹Library,把这些文件复制过去
这个同理也是要在魔法棒里添加路径的
然后依次再打开:
.\STM32F10x_StdPeriph_Lib_V3.5.0\STM32F10x_StdPeriph_Lib_V3.5.0\Project\STM32F10x_StdPeriph_Template

这个conf文件是用来配置库函数头文件的包含关系的(conf文件是包含所有库函数的头文件的头文件,只要调用这个相当于调用所有库文件)
又因为stm32f10x.h这个头文件里包含了stm3f10x_conf.h这个文件,所以包含一个stm32f10x.h
就相当于包含了全部库函数!

另外两个it文件是用来存放中断函数的
把这三个文件粘贴到User文件夹下
然后接下来还需要一个宏定义

这个文件滑到最下面可以看到

这句的意思是当USE_STDPERIPH_DRIVER成立(即使用标准外设驱动时)stm3f10x_conf.h这个头文件才工作,默认不是这个,所以我们要自己配置
复制下USE_STDPERIPH_DRIVER
打开魔法棒然后在Define这里粘贴刚刚的内容

自此已新建好了一个基于标准库开发的工程
总结:

