要创建库函数工程模板,首先需要有固件库包,固件库的版本有很多,可以到 ST 官网上下载,也可通过百度搜索下载,但是注意一定要下载 STM32F1 的固件库。
固件库包获取以后下面就正式进入工程模板的创建,我们在电脑任意位置创建一个文件夹,命名为“keil_demo”,然后在其下面新建 3 个文件夹,如下:(文件夹命名可任意,我们这里根据文件类型命名)
CMSIS 文 件 夹 用 于 存 放 一 些 CMSIS 标 准 文 件 和 启 动 文 件 ; STM32F10x_StdPeriph_Driver 文件夹用于存放 STM32 外设驱动文件。
将STM32F10x_StdPeriph_Lib_V3.5.0\Libraries\CMSIS\CM3\CoreSupport中的文件复制到CMSIS中,然后再将STM32F10x_StdPeriph_Lib_V3.5.0\Libraries\CMSIS\CM3\DeviceSupport\ST\STM32F10x中的文件全部复制到CMSIS中。最终CMSIS中的文件如图
直接从固件库“STM32 最新固件库 v3.5\Libraries\STM32F10x_StdPeriph_Driver”目录下复制inc和src文件到STM32F10x_StdPeriph_Driver 文件夹。里面存放的就是 STM32 标准外设驱动文件,src 目录存放的是外设驱动的源文件,inc 目录存放的是对应的头文件。 STM32F10x_StdPeriph_Driver 文件夹内文件如下:
将STM32F10x_StdPeriph_Lib_V3.5.0\Project\STM32F10x_StdPeriph_Template中的c和h文件复制进USER,如下图所示:
到这里就已经将创建库函数模板所需的固件库文件复制过来了。
打开 KEIL5 软件,新建一个工程,工程名根据个人喜好命名,但是要注意使用英文,如果使用中文名可能会出现一些奇怪的错误,这里我们命名为Demo_proj,直接保存在最开始创建的 “keil_demo”文件夹下。具体步骤如下:
芯片型号选STM32F103RC
选择完 CPU 点击 OK 后会弹出在线添加固件库文件的界面,如下:
在新建的工程中添加文件,文件从“keil_demo”文件夹下获取,双击 Group 文件夹就会出现添加文件的路径,然后选择文件即可。如果我们将“keil_demo”目录下的文件都添加到 Group 这个默认组中,显然是非常乱的,对于我们查找工程文件和工程维护极其不方便。因此这里我们需要根据文件类型来 构建新的工程组。操作步骤如下: 点击“管理工程项目按键”,依次创建CMSIS、User、Startup、StdPeriph_Driver文件
然后给文件夹添加对应的工程文件
CMSIS选择.c文件 (.h编译的时候会自动添加进来),USER选择所有的.c文件,STARTUP要选择CMSIS\startup\arm中的startup_stm32f10x_hd.s, StdPeriph_Driver中添加src中的gpio.c和rcc.c文件即可,添加完毕点击OK。 将所有文件添加至对应工程组之后,如下所示:
在 StdPeriph_Driver 工程组中我们只添加了 2 个源文件,对于 STM32 程序开发,通常这 2 个文件都是需要的,其他的外设源文件根据是否使用外设而添加,如果大家把所有的源文件都加进来也是没有问题的,只不过工程在编译的时候会比较慢,所以我们的原则是使用到哪个外设就添加哪个外设的源文件。
这一步的配置工作非常重要,很多人编写程序编译后发现找不到 HEX 文件, 还有的人后面做 printf 实验时打印不出信息,这些问题都是在这个地方没有配 置好导致的。 (1)Target 中选中微库“Use MicroLib”,编译器版本选5,其他的设置保持默认即可,配置如下:
(2)Output 选项卡中把输出文件夹定位到我们工程目录下的 Obj 文件夹, 如果想在编译的过程中生成 hex 文件,那么 Create HEX File 选项勾上。配置 如下
(3)C/C++选项卡配置 因为创建的是库函数模板,所以需要在对处理器类型和库进行宏定义,在 Define 这一栏中复制这两个宏:USE_STDPERIPH_DRIVER,STM32F10X_HD, 设置好了宏,还需要将我们前面添加到工程组中的文件路径包括进来,同样 还是在 C/C++选项卡中,具体步骤如下
(4)ARM 仿真器配置 当你的仿真器安装好驱动并且连接了电脑和板子,开发板即可供电,只要在 KEIL 软件内进行相应的配置即可下载程序和仿真。使用之前需要选择对应的工具,我这里使用的是ST-LINK,小伙伴们可以根据自己所使用的工具进行选择。
选择好 CMSIS-DAP Debugger 型号后点击 Settings,会弹出如下界面,如果 你的型号没有选择错误的话,自动会识别你的 ARM 仿真器 ID 了,然后即可设置 SW 或者 JTAG 模式以及复位的方式,建议大家使用 SW 模式,如果使用 JTAG 模式 的话,后面有些例程是占用了一部分管脚的。所以推荐使用 SW 模式下载及调试。 具体设置步骤如下:
(5)芯片型号选择 同样在上一步的那个 Debug 选项卡内进行设置,点击 Settings,选择 Flash Download 选项卡,在框 3 中的 Reset and Run 选项中,如果勾上的话,当程序下载进去后自动复位运行, 如果不勾上,程序下载进去后需按下开发板上复位键才能运行。通常我们选择勾上。具体配置如下:
最后点击 OK 按钮即可。然后双击工程组中的 main.c 文件会发现里面有很多 代码,这个是我们直接从 ST 公司提供的模板上复制过来的,所以我们把 main.c 文件内的所有内容删除,写上一个最简单的框架程序,我们输入如下内容:
x
int main()
{
while(1)
{
}
}
然后我们编译一下工程,编译后结果 0 错误 0 警告,表明我们创建的库函数 模板完全正确。如下: 图标 1 中第一个编译是对单个文件编译,第二个编译是对工程中修改过的文件进行编译,第三个编译是对工程中所有文件进行编译。通常我们使用的是中间那个编译,效率比较高。 到这一步我们的第一个工程demo_proj就创建成功了!