Keil MDK5新建工程并手动添加固件库的流程以及可能遇到的问题

在Keil MDK5中创建工程以及遇到的问题

  • 索引
    • 一、建立工程
    • 二、可能遇到的问题

索引

本文假设读者已经安装好了Keil MDK5。
 

一、建立工程

1. Keil界面中选择 Project => new μVision Project,选择一个空文件夹,输入工程名,如下:

Keil MDK5新建工程并手动添加固件库的流程以及可能遇到的问题_第1张图片
建议所选路径为全英文,避免意料之外的错误,这个老生常谈了
 

2. 选择芯片,可以在search里搜索,如下:

Keil MDK5新建工程并手动添加固件库的流程以及可能遇到的问题_第2张图片
 

3. 这一步到了Run-Time Environment管理,如图:

Keil MDK5新建工程并手动添加固件库的流程以及可能遇到的问题_第3张图片

一般情况下,我们在建立工程时会把图中两个标记的部分勾选上,分别会为工程添加对应的固件库和启动文件。但是我们这里不勾选,直接点Cancel跳过,后面手动添加,目的是了解工程建立的详细过程。

另外还有一点,通过这里勾选添加的固件库并不会被实际拷贝到工程目录下,工程编译时会去相应的文件库寻找头文件。这也是我写下这篇文章的原因,因为Keil的文本编辑功能过于简陋,我寄希望于用VS Code去替代Keil(指替代Keil的编辑、编译功能)编辑代码,如果工程目录下没有固件库文件,会导致VS Code无法找到头文件。虽然可以在配置文件中添加头文件路径,但是也只是对单个工程而言,另开一个工程又要重复设置,暂未找到在VS Code中为Keil项目统一设置头文件路径的方法。

综上,选择在工程中手动添加固件库。

 

4. 手动添加库文件
接下来打开工程所在目录,新建几个文件夹:CORE、Bsp、User、Utils,文件夹名称可以随意,如下:

Keil MDK5新建工程并手动添加固件库的流程以及可能遇到的问题_第4张图片
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为例:
Keil MDK5新建工程并手动添加固件库的流程以及可能遇到的问题_第5张图片

解压出来呢里面就有这么些东西:
Keil MDK5新建工程并手动添加固件库的流程以及可能遇到的问题_第6张图片
1、我们先将Libraries目录下的STM32F10x_StdPeriph_Driver整个拷贝到工程文件中
Keil MDK5新建工程并手动添加固件库的流程以及可能遇到的问题_第7张图片
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界面中为工程添加文件。

 
点这个玩意儿:
Keil MDK5新建工程并手动添加固件库的流程以及可能遇到的问题_第8张图片

得到如下界面:

Keil MDK5新建工程并手动添加固件库的流程以及可能遇到的问题_第9张图片
在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
点击魔法棒:

Keil MDK5新建工程并手动添加固件库的流程以及可能遇到的问题_第10张图片
然后:

Keil MDK5新建工程并手动添加固件库的流程以及可能遇到的问题_第11张图片
将带有 .h 文件的目录包含进去:
Keil MDK5新建工程并手动添加固件库的流程以及可能遇到的问题_第12张图片

至此呢,就算建完了。

 

二、可能遇到的问题

1. 编译出现大量错误
我遇到的情况是这样子:

Keil MDK5新建工程并手动添加固件库的流程以及可能遇到的问题_第13张图片
这个和CMSIS的版本有关,我们在官网下载的固件库中的 core.cm3.h 文件比较老旧,可以打开此文件看看最上面的版本信息。
 
比如我下载的这个版本是 V1.30,还是2009年的,确实很老了:
Keil MDK5新建工程并手动添加固件库的流程以及可能遇到的问题_第14张图片
 
但是如果你有在Keil中下载对应的固件库的话,你可以在Keil的安装目录找到一个新版本的该文件。你可能会搜索到很多个同名文件,通过路径名与对应器件选择正确的文件,对工程目录下的该文件进行替换。
如下,Keil中有一个版本为 V5.1.2 的:
Keil MDK5新建工程并手动添加固件库的流程以及可能遇到的问题_第15张图片

 
至此就能成功编译了。

 


如有需要可联系我
qq: 305824720
mail: [email protected]

你可能感兴趣的:(嵌入式相关,单片机,stm32,嵌入式硬件)