12、库函数模板创建

12、 库函数模板创建

本章将向大家介绍如何创建库函数工程模板,为后面基于库函数程序的开发
提供方便。学习本章可以参考“STM32 固件库介绍”章节内容,如不喜欢看文档
的朋友可以看视频,不喜欢看视频的朋友可以看文档。本章分为如下几部分内容:

 

9.1 固件库的获取

9.2 创建库函数工程

9.3 启动文件介绍


9.1 固件库的获取


要创建库函数工程模板,首先需要有固件库包,固件库的版本有很多,我们
提供给大家的是最新 V3.5 版,如果后面有新版本出来,大家可按照同样的方法
创建库函数工程模板。固件库包存放在光盘“8--STM32 相关资料\STM32 最新固
件库 v3.5”内,大家直接使用即可。如果朋友不嫌麻烦自己也可以到 ST 官网上
下载,也可通过百度搜索下载,但是一定要下载 STM32F1 的固件库,如果下载的
是 STM32F4 固件库,后面使用该固件库创建的工程模板下载到开发板上时就会出
问题。为了保证光盘内的固件库包不被修改,自己可备份一份。

 

9.2 创建库函数工程

9.2.1 新建工程


固件库包获取以后下面就正式进入工程模板的创建,我们在电脑任意位置创
建一个文件夹,命名为“库函数模板创建”,然后在其下面新建 3 个文件夹,如
下:(文件夹命名可任意,我们这里根据文件类型命名)
Obj 文件夹:用于存放编译产生的 c/汇编/链接的列表清单、调试信息、 hex
文件、预览信息、封装库等文件。
User 文 件 夹: 用 于 存 放用 户 编 写的 main.c 、stm32f10x.h 头 文 件、
stm32f10x_conf.h配置文件、stm32f10x_it.c和stm32f10x_it.h中断函数文件。
Libraries 文件夹:用于存放 CMSIS 标准和 STM32 外设驱动文件。
这和前面介绍寄存器模板创建时多了一个 Libraries 文件夹,在此文件夹下
新建 2 个文件夹命名为 CMSIS 和 STM32F10x_StdPeriph_Driver,其实这些文件
夹命名都是直接复制固件库相应的文件夹名,如下:
CMSIS 文 件 夹 用 于 存 放 一 些 CMSIS 标 准 文 件 和 启 动 文 件 ;
STM32F10x_StdPeriph_Driver 文件夹用于存放 STM32 外设驱动文件。具体的
CMSIS 标准文件、外设文件以及它们的路径等内容可以在“STM32 固件库介绍”
章节中了解,还可以查看本章视频教程,里面就有详细的操作步骤。
CMSIS 文件夹内文件如下:
我们从这里面抽取工程模板 CMSIS 所需的几个文件出来,如下:(这些文件
在前面介绍固件库已做讲解,这里就不再重复它们的路径是哪里)
STM32F10x_StdPeriph_Driver 文件夹内文件如下:
其实这个文件夹都是直接从固件库“STM32 最新固件库
v3.5\Libraries\STM32F10x_StdPeriph_Driver”目录下复制,无需修改。里面
存放的就是 STM32 标准外设驱动文件,src 目录存放的是外设驱动的源文件,inc
目录存放的是对应的头文件。如下:
User 文件夹内文件如下:
里面的这些文件也是从固件库内复制而来。
到这里就已经将创建库函数模板所需的固件库文件复制过来了,下一步打开
KEIL5 软件,新建一个工程,工程名根据喜好命名,但是要注意使用英文,如果
使用中文名可能会出现一些奇怪的错误,这里我们命名为 Template,直接保存
在最开始创建的 “库函数模板创建”文件夹下。具体步骤如下:


9.2.2 选择 CPU


这个根据你开发板使用的 CPU 具体的型号来选择,我们普中 PZ6806L 开发
板采用的是 STM32F103ZET6 芯片。如果这里没有出现你想要的 CPU 型号,或者
一个型号都没有,那么肯定是你在安装 KEIL5 软件的时候没有添加芯片包,KEIL5
不像 KEIL4 那样自带了很多 MCU 的型号,KEIL5 需要自己添加,可以参考我们
视频 KEIL5 软件的安装。具体操作如下:
选择完 CPU 点击 OK 后会弹出在线添加固件库文件的界面,如下:
我们这里手动进行添加,不需要此步,所以直接关闭即可。


9.2.3 给工程添加文件


在新建的工程中添加文件,文件从“库函数模板创建”文件夹下获取,双击
Group 文件夹就会出现添加文件的路径,然后选择文件即可。如果我们将“库函
数模板创建”目录下的文件都添加到 Group 这个默认组中,显然是非常乱的,对
于我们查找工程文件和工程维护极其不方便。因此这里我们需要根据文件类型来
构建新的工程组。操作步骤如下:
可以选择快捷图标 1 来进行创建工程组,也可以在工程列表下右键“Target1”
选择“Manage Project Items...”,如下:
为了工程目录更加清晰及方便文件查找,新建 User、Startup、
StdPeriph_Driver 和 CMSIS 工程组。
User 组用于存放 User 文件夹下的源文件,Startup 组用于存放 STM32 的启
动文件,StdPeriph_Driver 组用于存放 STM32 外设的驱动源文件、CMSIS 组用于
存放 CMSIS 标准文件,比如系统总线时钟等初始化源文件。
创建好的工程目录组如下所示:
接下来就需要将对应的一些文件添加到工程目录组中,这样才能进行程序的
开发。添加工程文件步骤如下:
同样是点击图标 1,弹出界面后,在图标 2 中选择好要添加的工程组,点击
图标 3 添加文件,会弹出添加文件对话框,在图标 4 中选择对应文件夹内的文件
(细心的朋友会发现前面我们只创建了 User、Obj、Libraries 文件夹,却多出
了另外 2 个文件夹 Objects 和 Listings,这是因为使用 KEIL5 创建工程时默认
会产生这两个文件夹用于存放程序编译后的列表文件及 HEX 等文件,这里我们可
以将这两个文件夹剪切到我们创建的 OBJ 文件夹内,也可以删除它),注意图标
5 中文件类型的选择,默认是.c 文件,在 Startup 工程组中我们需要添加 STM32
的启动文件,而启动文件类型是.s,所以要将文件类型选择为“All files(*.*)”
才能看到,点击图标 6 即可添加,将所有文件添加至对应工程组后,如下所示:
在 StdPeriph_Driver 工程组中我们只添加了 2 个源文件,对于 STM32 程序
开发,通常这 2 个文件都是需要的,其他的外设源文件根据是否使用外设而添加,
如果大家把所有的源文件都加进来也是没有问题的,只不过工程在编译的时候会
比较慢,所以我们的原则是使用到哪个外设就添加哪个外设的源文件。


9.2.4 配置魔术棒选项卡


这一步的配置工作非常重要,很多人编写程序编译后发现找不到 HEX 文件,
还有的人后面做 printf 实验时打印不出信息,这些问题都是在这个地方没有配
置好导致的。
(1)Target 中选中微库“Use MicroLib”,主要是为了后面 printf 重定
向输出使用,不然会出现各种奇怪的现象。其他的设置保持默认即可,配置如下:
(2)Output 选项卡中把输出文件夹定位到我们工程目录下的 Obj 文件夹,
如果想在编译的过程中生成 hex 文件,那么 Create HEX File 选项勾上。配置
如下:
(3)Listing 选项卡中把输出文件夹也定位到我们工程目录下的 Obj 文件
夹。其他设置默认,配置如下:
(4)C/C++选项卡配置
因为创建的是库函数模板,所以需要在对处理器类型和库进行宏定义,在
Define 这一栏中复制这两个宏:USE_STDPERIPH_DRIVER,STM32F10X_HD
注意它们之间有一个英文符的逗号。通过这两个宏就可以对 STM32F10x 系列
芯片进行库开发,因为在库源码内支持很多 F1 系列芯片,通过这个宏就可以选
择到底是用种芯片的库驱动。同理 USE_STDPERIPH_DRIVER 这个宏也是类似的原
理。这里我们就不深究,大家只要复制到 Define 栏中即可。
设置好了宏,还需要将我们前面添加到工程组中的文件路径包括进来,同样
还是在 C/C++选项卡中,具体步骤如下:
首先点击图标 1,弹出一个添加头文件路径的对话框,然后点击图标 2,新
建一个空路径列表,再点击图标 3,会弹出浏览文件夹对话框,在图标 4 中选择
对应的头文件路径即可,这个头文件路径就是你工程组中那些文件的头文件路径,
选择好后点击图标 5 确定,然后回到图标 2 重新建立一个空路径列表,再次添加
路径,直到所有头文件路径添加完成点击图标 6 即可。
最后添加好的头文件路径如下:
(5)ARM 仿真器配置
只有当你的仿真器安装好驱动并且连接了电脑和板子,那么就可以开始配置。
如果使用我们公司的 ARM 仿真器可以直接插上电脑,电脑会自动安装驱动无需手
动安装,而且将 ARM 仿真器的 USB 一端连接电脑,另一端连接开发板上的 JTAG
接口,开发板即可供电,只要在 KEIL 软件内进行相应的配置即可下载程序和仿
真。具体的配置如下(我们已经将 ARM 仿真器连接开发板):
选择好 CMSIS-DAP Debugger 型号后点击 Settings,会弹出如下界面,如果
你的型号没有选择错误的话,自动会识别你的 ARM 仿真器 ID 了,然后即可设置
SW 或者 JTAG 模式以及复位的方式,建议大家使用 SW 模式,如果使用 JTAG 模式
的话,后面有些例程是占用了一部分管脚的。所以推荐使用 SW 模式下载及调试。
具体设置步骤如下:


(5)芯片型号选择。
同样在上一步的那个 Debug 选项卡内进行设置,点击 Settings,选择 Flash
Download 选项卡,我们使用的芯片是 STM32F103ZET6,其 Flash 为 512KB。在框 3
中的 Reset and Run 选项中,如果勾上的话,当程序下载进去后自动复位运行,
如果不勾上,程序下载进去后需按下开发板上复位键才能运行。通常我们选择勾
上。具体配置如下:
最后点击 OK 按钮即可。然后双击工程组中的 main.c 文件会发现里面有很多
代码,这个是我们直接从 ST 公司提供的模板上复制过来的,所以我们把 main.c
文件内的所有内容删除,写上一个最简单的框架程序,我们输入如下内容:

#include "stm32f10x.h"
int main()
{
  while(1)
  {
       } }

 

然后我们编译一下工程,编译后结果 0 错误 0 警告,表明我们创建的库函数
模板完全正确。如下:
图标 1 中第一个编译是对单个文件编译,第二个编译是对工程中修改过的文
件进行编译,第三个编译是对工程中所有文件进行编译。通常我们使用的是中间
那个编译,效率比较高。
到这一步我们的库函数模板才算真正创建好。

转载于:https://www.cnblogs.com/zhb123456/p/10494781.html

你可能感兴趣的:(c/c++,嵌入式)