在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

    物联沃分享整理
    物联沃-IOTWORD物联网 » 在Keil MDK5中新建工程并手动添加固件库:流程与可能遇到的问题

    发表评论