在Keil MDK5中新建工程并手动添加固件库:流程与可能遇到的问题
在Keil MDK5中创建工程以及遇到的问题
索引
本文假设读者已经安装好了Keil MDK5。 |
一、建立工程
1. Keil界面中选择 Project => new μVision Project,选择一个空文件夹,输入工程名,如下: |
建议所选路径为全英文,避免意料之外的错误,这个老生常谈了
2. 选择芯片,可以在search里搜索,如下: |
3. 这一步到了Run-Time Environment管理,如图: |
一般情况下,我们在建立工程时会把图中两个标记的部分勾选上,分别会为工程添加对应的固件库和启动文件。但是我们这里不勾选,直接点Cancel跳过,后面手动添加,目的是了解工程建立的详细过程。
另外还有一点,通过这里勾选添加的固件库并不会被实际拷贝到工程目录下,工程编译时会去相应的文件库寻找头文件。这也是我写下这篇文章的原因,因为Keil的文本编辑功能过于简陋,我寄希望于用VS Code去替代Keil(指替代Keil的编辑、编译功能)编辑代码,如果工程目录下没有固件库文件,会导致VS Code无法找到头文件。虽然可以在配置文件中添加头文件路径,但是也只是对单个工程而言,另开一个工程又要重复设置,暂未找到在VS Code中为Keil项目统一设置头文件路径的方法。
综上,选择在工程中手动添加固件库。
4. 手动添加库文件 |
接下来打开工程所在目录,新建几个文件夹:CORE、Bsp、User、Utils,文件夹名称可以随意,如下:
User:用来存储你自己写的代码,暂时不用管它。
Bsp和Utils两个文件夹暂时用不上,你也可以不用创建它们。随着开发过程的进行,这俩文件夹可以用来存放一些驱动文件或工具文件等,暂时不管。
CORE:存放一些stm标准库,马上要用到。
问题来了,固件库文件从哪来?
1、Keil安装目录中能找到(如果你有下载对应器件库的话);
2、官网下载:https://www.st.com/content/st_com/en/search.html#q=stsw-stm32-t=tools-page=1
这里我们选择官网下载,我一直觉得Keil中的文件过于杂乱(究其原因是本人初学也不太懂),以stm32f10x为例:
解压出来呢里面就有这么些东西:
1、我们先将Libraries目录下的STM32F10x_StdPeriph_Driver整个拷贝到工程文件中
2、然后在 Libraries\CMSIS\CM3 目录及其子目录下找到如下几个文件:core_cm3.h、system_stm32f10x.c、system_stm32f10x.h、stm32f10x.h、startup_stm32f10x_hd.s 拷贝到CORE下。
3、在库文件目录Project\STM32F10x_StdPeriph_Template下将stm32f10x_conf.h、stm32f10x_it.c、stm32f10x_it.h 拷贝到CORE下。
4、我们还是需要Keil安装目录下的一些文件:cmsis_armclang.h、cmsis_compiler、cmsis_gcc.h、cmsis_version.h,这些文件可以直接在Keil安装目录搜索,每个文件都可能搜索到多个结果,根据器件选择合适的拷贝到CORE目录下。
至此呢,文件就准备好了。
5. 在工程中添加文件并分组 |
只是简单的把文件放在工程目录下,在工程编译时是不会被使用的,需要在Keil界面中为工程添加文件。
点这个玩意儿:
得到如下界面:
在Project Targets中可以修改Target名称。
在Groups可以添加新的代码组(group)或删掉group,合理建立group可以时代码结构更清晰。
在Files中可以对选中的group添加文件。
可以按照上图建立group;
在CORE中添加CORE文件夹中的 .c 文件和 .s 文件;
在User中添加自己写的 .c 文件,如果没有可以后续创建再添加;
再FWLIB中添加STM32F10x_StdPeriph_Driver文件夹中的全部文件;
6. 配置c/c++ include path |
点击魔法棒:
然后:
将带有 .h 文件的目录包含进去:
至此呢,就算建完了。
二、可能遇到的问题
1. 编译出现大量错误 |
我遇到的情况是这样子:
这个和CMSIS的版本有关,我们在官网下载的固件库中的 core.cm3.h 文件比较老旧,可以打开此文件看看最上面的版本信息。
比如我下载的这个版本是 V1.30,还是2009年的,确实很老了:
但是如果你有在Keil中下载对应的固件库的话,你可以在Keil的安装目录找到一个新版本的该文件。你可能会搜索到很多个同名文件,通过路径名与对应器件选择正确的文件,对工程目录下的该文件进行替换。
如下,Keil中有一个版本为 V5.1.2 的:
至此就能成功编译了。
如有需要可联系我
mail: caolikun0730@126.com