
转自 2IC论坛 http://bbs.21ic.com/icview-789904-1-1.html 觉得这个帖子对新手帮助挺大的 快速建工程省去了很多时间 L/ K) S$ O$ f" X$ X @ 以下正文:1 k+ l* p# `5 x1 m' s4 \3 P 本人使用keil 5有一段时间了,发现keil5真考虑周到,里面驱动库也帮你准备好了。这个新功能可以节省我们的时间,也可以让初学者能尽快上手和掌握这个芯片。大家以后既就可以很方便的建自己的工程模板了,再也不会为了找芯片的驱动库而烦恼。 今天外我来教大家来怎么使用这个建工程的利器吧。 首先是新建工程吧,如下图步骤: ![]() ![]() 因为我用的是stm32f401 Necleo,所以芯片型号应该要选择stm32f401te,选好芯片类型后,会弹出一个大的面板,如下图: ![]() 红色框里的都是一些集成在keil 5的启动文件,arm内核的文件,st公司的库函数和一些API等等。一个工程最起码也要选上core和startup两个选项,如下图: ![]() 然后选择OK,就建好了空白的工程。然后就要对工程做一些设置,如下图: ![]() ![]() ![]() 然后新建的文件main.c添加到工程当中,步骤如下: 9 N. G* P, s9 E. s+ [% B3 p1 ?* y![]() 然后在main.c文件中添加如下代码: ![]() 到这里我们的空白工程建好了,后面我来教大家怎样加keil 5里自带的st库。首先我点击那个绿色的小图标,如下图: ![]() 点击后会弹出一个大的页面,然后找到Device->StdPeriph Drivers。如下图: ![]() 点开StdPeriph Drivers选项的加号图标,就可以看到st库目录下各外设的驱动文件,后面是他的版本说明,这是V1.3版本的,是比较新的,建议大家尽量使用新的库。 我这里就勾上了所有外设的驱动的文件,如下图: ![]() ![]() 然后点击OK后,就可以看到原先工程目录下的Device添加了刚才选择外设的驱动文件。添加完后大家不要急着编译工程,还有对工程进行相关的配置,否则如下图,编译不成功的: ![]() 接下来,我来配置下工程,右击target,然后进入配置工程的面板,步骤如下: ![]() 这里要填上USE_STDPERIPH_DRIVER,这就表明编译器选择了st的库 ![]() 然后我们来指定编译器头文件的路径 ![]() / ]* `+ c6 e# ?/ F ![]() * r3 P0 X5 W( o7 c* A% n. w ![]() 以上这两个路径是编译器编译时要找的路径,这几个头文件至关重要,这里编译器关联头文件所需要的。 1 p& k% p$ u& s# B" M![]() # K# t; T X4 I1 h6 q* s, F% j2 ` ![]() 当做完以上工作后,我们就可以来编译一下工程,在编译时,编译器就会根据我们的配置来编译驱动头文件和驱动的C文件。如下图: 2 r/ x! Z$ r/ n# M+ a![]() 当编译成功后会出现以下的信息: ![]() 下面我们要看看新的stm32f4xx_conf.h里的内容吧,如下图: , q5 m& ]+ V( C5 k A e) C) V5 X![]() 可以看出这跟旧版本的stm32f4xx_conf.h文件有些区别,在每个头文件这里多了个条件编译, 大家可以理解成开关吧,就是用来选择编译头文件用的,而这些开关都在RTE_Components.h这个头文件里,如下图: ![]() 编译完成后,可以看出main.c里包含了各驱动库的头文件,如下图: $ O* Z9 z- k u/ Y+ h; n5 J![]() 做完以上工作后,我们就建好了一个基于库函数的模板了。 当大家编译完工程后,会发现工程目录里多出了好多文件,这是正常的,这是编译后产生的文件,如下图: # a$ K; D' f7 e9 c! |8 s![]() 先把原来的产生的文件删除掉,删除后如下图: * `2 r r- W1 ^9 z! a![]() 现在我教大家怎样把这些文件指定每次编译后生成在指定的地方。 步骤如下: 首先还是进入工程配置的选项面板,然后在自己的工程目录里新建一个Output的文件,然后点击去,再点击OK,这样就代表告诉编译器器每次编译后生成的文件都会放在这个文件夹里。 7 e) ^' c9 j3 F& }7 L) p9 Y![]() ![]() 这个跟上面的一样配置。 ![]() ![]() 做好这些工作后,就可以编译工程了,编译完后生成的文件会保存在自己指定的那两个文件,如下图: % ]% f7 R" n) U1 _![]() ![]() * F1 j8 J9 j' W5 N ![]() 这样工程目录下的结构就清爽多了。 ![]() |
顺便问问 转帖是不是碰到附件的图片 只能下载下来 然后一张一张往上传 ?