ICode9

精准搜索请尝试: 精确搜索
首页 > 其他分享> 文章详细

库函数模板创建

2019-03-08 11:54:20  阅读:330  来源: 互联网

标签:文件 工程 创建 文件夹 固件 添加 模板 库函数


第 9 章 库函数模板创建
本章将向大家介绍如何创建库函数工程模板,为后面基于库函数程序的开发
提供方便。学习本章可以参考“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

本站声明: 1. iCode9 技术分享网(下文简称本站)提供的所有内容,仅供技术学习、探讨和分享;
2. 关于本站的所有留言、评论、转载及引用,纯属内容发起人的个人观点,与本站观点和立场无关;
3. 关于本站的所有言论和文字,纯属内容发起人的个人观点,与本站观点和立场无关;
4. 本站文章均是网友提供,不完全保证技术分享内容的完整性、准确性、时效性、风险性和版权归属;如您发现该文章侵犯了您的权益,可联系我们第一时间进行删除;
5. 本站为非盈利性的个人网站,所有内容不会用来进行牟利,也不会利用任何形式的广告来间接获益,纯粹是为了广大技术爱好者提供技术内容和技术思想的分享性交流网站。

专注分享技术,共同学习,共同进步。侵权联系[81616952@qq.com]

Copyright (C)ICode9.com, All Rights Reserved.

ICode9版权所有