KEIL5初学者,工程构建教程(库函数版本)

鉴于我学习的资料内容比较多,刚开始使用keil来构建工程还是有点麻烦的,每次忘了点什么步骤就要从众多数据中找到构建项目的方法是十分麻烦的,所以我就干脆在此写一个教程吧,在加深自己印象的同时,说不定还能帮助到某些同学呢(天真无邪的笑容,呵呵)。

在此声明一下我使用的开发板是开元电子的STM32F103RC

首先我们要在某个目录下建立一个文件夹,然后把后面的工程文件都放到这个文件夹中,方便以后寻找。为了演示方便(其实是我比较懒啊),我就建在桌面上了(你们千万不要学我啊,建在桌面上相当于放在C盘啊),然后再在我们的Template目录下构建一系列子文件夹(USER,CORE,HARDWARE,SYSTEM,STM32F10x_FWLib,OBJ),如图:

  • CORE用来存放核心文件和启动文件;

  • OBJ用来存放编译过程文件以及hex文件;

  • STM32F10x_FWLib文件用来存放ST官方提供的库函数源码文件;

  • USER除了用来放工程文件外,还用来存放主函数文件main.c,以及其他包括system_stm32f10x.c等等

  • SYSTEM里存放的是接下来我们每个实验都要使用的共用代码,该代码由ALIENTEK编写,在此不做详细介绍。

  • HAREWARE用来存放提供外部硬件相关的驱动函数,每个.c源文件对应一个.h头文件。

1.jpg
现在地基已经打好了,我们要开始造房子了,打开KEIL,选择Project–>New Uvision Project,然后将目录定位到刚才我们打的地基(USER目录)下吧,房子(工程)的名字就叫Template.
2.jpg
3

点击保存之后,你就会看到如下界面:

4.jpg

这是在告诉我们要选房子的型号了,这个时候我们就要应地制宜了,经过我们的判断,我们决定选择STM32F103RC这个型号的房子,因为在这个地方这种型号的房子最稳定。

5.jpg

再单击OK,出现如下界面:

6.jpg

这是KEIL5新增的一个功能,在这个界面,我们可以添加自己需要的组件,从而方便构建开发环境,不过这里我们不做介绍。所以在所示界面,我们直接点击Cancel,即可.得到下图所示界面:

7.jpg

现在我们看看USER目录下面包含2个文件夹和2个文件,如下图:

8.jpg

这里我们说明一下,Template.uvprojx是工程文件,非常关键,不能轻易删除。Listings和Objects文件夹是KEIL自动生成的文件夹,用于存放编译过程产生的中间文件。这里,为了跟之前版本工程兼容,我们把两个文件夹删除,我们将其放在之前我们新建的Template目录下的OBJ文件夹,用来存放编译中间文件。当然,我们不删除这两个文件夹也是没有关系的,只是我们不用它而已。

到了这里,我们也只是打了地基,选了房子型号,设计了图纸,要建房子,我们还要什么呢,没错,就是砖(启动代码以及.c文件)!现在我们开始搬砖:

下面我们要将官方的固件库包里的源码文件复制到我们的工程目录文件夹下面。

打开官方固件库包,定位到我们之前准备好的固件库包的目录

STM32F10x_StdPeriph_Lib_V3.5.0\Libraries\STM32F10x_StdPeriph_Driver下面,

将目录下面的src,inc文件夹copy到我们刚才建立的STM32F10x_FWLib文件夹下面。

src存放的是固件库的.c文件,inc存放的是对应的.h文件,不妨打开这两个文件目录过目一下里面的文件,每个外设对应一个.c文件和一个.h头文件。

9.jpg

下面我们要将固件库包里面相关的启动文件复制到我们的工程目录CORE之下。

打开官方固件库包,定位到目录

STM32F10x_StdPeriph_Lib_V3.5.0\Libraries\CMSIS\CM3\CoreSupport下面,将文件core_cm3.c和文件core_cm3.h复制到CORE下面去。然后定位到目录STM32F10x_StdPeriph_Lib_V3.5.0\Libraries\CMSIS\CM3\DeviceSupport\ST\STM32F10x\startup\arm下面,将里面startup_stm32f10x_hd.s文件复制到CORE下面。这里我们我之前已经解释了不同容量的芯片使用不同的启动文件,我的芯片STM32F103RCT6是大容量芯片,所以选择这个启动文件

10.jpg

定位到目录:

STM32F10x_StdPeriph_Lib_V3.5.0\Libraries\CMSIS\CM3\DeviceSupport\ST\STM32F10x下面

将里面的三个文件stm32f10x.h,system_stm32f10x.c,system_stm32f10x.h,复制到我们的USER目录之下。然后将

STM32F10x_StdPeriph_Lib_V3.5.0\Project\STM32F10x_StdPeriph_Template下面的4个文件main.c,stm32f10x_conf.h,stm32f10x_it.c,stm32f10x_it.h复制到USER目录下面。

在我们协会提供的资料中,打开任何一个固件库的实验,可以看到下面有一个SYSTEM文件夹,进入,里面有三个子文件夹delay,sys,usart,将这三个子文件夹copy到我们新建的SYSTEM文件夹之下

11.jpg

呼~总算搬完了,终于可以建了,点开KEIL, 右键点击Target1,选择ManageProject Items

12.jpg

更改我们的Target名称为Template,添加Groups,如下:

13.jpg

然后我们往Groups里面添加文件,点击Add Files添加:

USER目录下面需要添加的文件为main.c,stm32f10x_it.c,system_stm32f10x.c.

CORE目录下需要添加的文件为core_cm3.c,startup_stm32f10x_hd.s(注意,默认添加的时候文件类型为.c,也就是添加startup_stm32f10x_hd.s启动文件的时候,你需要选择文件类型为All files才能看得到这个文件);

FWLIB目录下需要添加的文件为我们建立的文件夹STM32F10x_FWLib/src下面所有的.c文件(全选快捷键为Ctrl+A).这里需要说明一下,对于我们写代码,如果我们只用到了其中的某个外设,我们就可以不用添加没有用到的外设的库文件。例如我只用GPIO,我可以只用添加stm32f10x_gpio.c而其他的可以不用添加。这里我们全部添加进来是为了后面方便,不用每次添加,当然这样的坏处是工程太大,编译起来速度慢,你们可以自行选择。

14.jpg

SYSTEM目录下需要添加的文件为SYSTEM文件夹的各个子文件夹下的.c文件。

15.jpg

HARDWARE内的文件需要根据你的程序决定,可以之后添加。

接下来我们要编译工程,在编译之前我们首先要选择编译中间文件编译后存放目录。

方法是点击魔术棒,然后选择“Output”选项下面的“Select folder forobjects…”,然后选择目录为我们上面新建的OBJ目录。这里大家注意,如果我们不设置Output路径,那么默认的编译中间文件存放目录就是KEIL自动生成的Objects目录和Listings目录。

还要勾上下面的三个选项。其中Create HEX file是编译生成hex文件,Browser Information是可以查看变量和函数定义。

16.jpg

房子快建好了,我们该做宣传了吧,这个时候就是要把我们的新房的地址告诉KEIL:

下面我们要告诉KEIL,在哪些路径之下搜索需要的头文件,也就是头文件目录。这里大家要注意,对于任何一个工程,我们都需要把工程中引用到的所有头文件的路径都包含到进来。回到工程主菜单,点击魔术棒,出来一个菜单,然后点击c/c++选项.然后点击IncludePaths右边的按钮。弹出一个添加path的对话框,然后我们将图中几个目录添加进去(HARDWARE根据你的程序,之后添加)。记住,keil只会在一级目录查找,所以如果你的目录下面还有子目录,记得path一定要定位到最后一级子目录。然后点击OK.

17.jpg

因为3.5版本的库函数在配置和选择外设的时候通过宏定义来选择的,所以我们需要配置一个全局的宏定义变量。按照上面的步骤,点击魔术棒,定位到c/c++界面,然后填写

“STM32F10X_HD,USE_STDPERIPH_DRIVER”到Define输入框里面(请注意,两个标识符中间是逗号不是句号,如果你不能确定你输入的是正确的,可以直接打开任何一个库函数实例,然后复制过来这串文字即可)。这里解释一下,如果你用的是中容量那么STM32F10X_HD修改为STM32F10X_MD,小容量修改为STM32F10X_LD.然后点击OK。

18.jpg

到这里,我们的房子的外部构架(工程模板)是彻底OK了。

至于之后的装修就看你们的喜好的,我这里就不举例说明的,我们的实验资料里可以学到之后知识。

最后编辑于
©著作权归作者所有,转载或内容合作请联系作者
  • 序言:七十年代末,一起剥皮案震惊了整个滨河市,随后出现的几起案子,更是在滨河造成了极大的恐慌,老刑警刘岩,带你破解...
    沈念sama阅读 203,098评论 5 476
  • 序言:滨河连续发生了三起死亡事件,死亡现场离奇诡异,居然都是意外死亡,警方通过查阅死者的电脑和手机,发现死者居然都...
    沈念sama阅读 85,213评论 2 380
  • 文/潘晓璐 我一进店门,熙熙楼的掌柜王于贵愁眉苦脸地迎上来,“玉大人,你说我怎么就摊上这事。” “怎么了?”我有些...
    开封第一讲书人阅读 149,960评论 0 336
  • 文/不坏的土叔 我叫张陵,是天一观的道长。 经常有香客问我,道长,这世上最难降的妖魔是什么? 我笑而不...
    开封第一讲书人阅读 54,519评论 1 273
  • 正文 为了忘掉前任,我火速办了婚礼,结果婚礼上,老公的妹妹穿的比我还像新娘。我一直安慰自己,他们只是感情好,可当我...
    茶点故事阅读 63,512评论 5 364
  • 文/花漫 我一把揭开白布。 她就那样静静地躺着,像睡着了一般。 火红的嫁衣衬着肌肤如雪。 梳的纹丝不乱的头发上,一...
    开封第一讲书人阅读 48,533评论 1 281
  • 那天,我揣着相机与录音,去河边找鬼。 笑死,一个胖子当着我的面吹牛,可吹牛的内容都是我干的。 我是一名探鬼主播,决...
    沈念sama阅读 37,914评论 3 395
  • 文/苍兰香墨 我猛地睁开眼,长吁一口气:“原来是场噩梦啊……” “哼!你这毒妇竟也来了?” 一声冷哼从身侧响起,我...
    开封第一讲书人阅读 36,574评论 0 256
  • 序言:老挝万荣一对情侣失踪,失踪者是张志新(化名)和其女友刘颖,没想到半个月后,有当地人在树林里发现了一具尸体,经...
    沈念sama阅读 40,804评论 1 296
  • 正文 独居荒郊野岭守林人离奇死亡,尸身上长有42处带血的脓包…… 初始之章·张勋 以下内容为张勋视角 年9月15日...
    茶点故事阅读 35,563评论 2 319
  • 正文 我和宋清朗相恋三年,在试婚纱的时候发现自己被绿了。 大学时的朋友给我发了我未婚夫和他白月光在一起吃饭的照片。...
    茶点故事阅读 37,644评论 1 329
  • 序言:一个原本活蹦乱跳的男人离奇死亡,死状恐怖,灵堂内的尸体忽然破棺而出,到底是诈尸还是另有隐情,我是刑警宁泽,带...
    沈念sama阅读 33,350评论 4 318
  • 正文 年R本政府宣布,位于F岛的核电站,受9级特大地震影响,放射性物质发生泄漏。R本人自食恶果不足惜,却给世界环境...
    茶点故事阅读 38,933评论 3 307
  • 文/蒙蒙 一、第九天 我趴在偏房一处隐蔽的房顶上张望。 院中可真热闹,春花似锦、人声如沸。这庄子的主人今日做“春日...
    开封第一讲书人阅读 29,908评论 0 19
  • 文/苍兰香墨 我抬头看了看天上的太阳。三九已至,却和暖如春,着一层夹袄步出监牢的瞬间,已是汗流浃背。 一阵脚步声响...
    开封第一讲书人阅读 31,146评论 1 259
  • 我被黑心中介骗来泰国打工, 没想到刚下飞机就差点儿被人妖公主榨干…… 1. 我叫王不留,地道东北人。 一个月前我还...
    沈念sama阅读 42,847评论 2 349
  • 正文 我出身青楼,却偏偏与公主长得像,于是被迫代替她去往敌国和亲。 传闻我的和亲对象是个残疾皇子,可洞房花烛夜当晚...
    茶点故事阅读 42,361评论 2 342

推荐阅读更多精彩内容

  • Ubuntu的发音 Ubuntu,源于非洲祖鲁人和科萨人的语言,发作 oo-boon-too 的音。了解发音是有意...
    萤火虫de梦阅读 99,117评论 9 467
  • 1:InputChannel提供函数创建底层的Pipe对象 2: 1)客户端需要新建窗口 2)new ViewRo...
    自由人是工程师阅读 5,235评论 0 18
  • 1. Java基础部分 基础部分的顺序:基本语法,类相关的语法,内部类的语法,继承相关的语法,异常的语法,线程的语...
    子非鱼_t_阅读 31,560评论 18 399
  • 还要遇见几个你,才能心如止水,世界这么大,偏偏遇到你。执着的人我遇到的并不少,但是你的执着让我措手不及,不知道...
    薄情y阅读 215评论 0 0
  • 晚上十点多,北京地铁13号线大钟寺站,一阵风迎面吹来,好冷。 在这个名为地铁实为轻轨的站台边,我的双脚沉重而疲惫,...
    梦游三万里阅读 586评论 0 1