当前位置:首页>> 图文解说:如何将STM32的标准库编译成lib库

图文解说:如何将STM32的标准库编译成lib库

发布时间:2017-03-25作者:智汇李

  以前一直使用STM32的标准库,需要一步步地将代码加进去,将编译选项设置好,然后再编译整个工程。这个编译过程是一个相当慢的过程!完全编译大约需要一支烟的时间。每次建立工程都这么编译,是一个相当浪费时间和香烟的过程。

  于是,我有了将库编译成lib文件的想法。本文就是我将STM32F4的标准库编译成lib文件并在工程中使用的过程。

  适用对象:

  1、熟悉库,不想再看库里边代码

  2、有稳定的库,库文件更新不频繁

  3、库文件多,每次编译时间长

  下面是我将STM32F4的标准库编译成lib并在工程中使用的过程:

  1、建立创建lib的工程

  2、将库文件拷贝到工程目录:

  将库里边目录\STM32F4xx_StdPeriph_lib v1.0.2\STM32F4xx_StdPeriph_Driver下的inc和src两个文件夹拷贝到预创建工程的目录。我计划在目录E:\学习\ARM\库\stm32f4-2中创建库。于是我将两个文件夹拷贝到了这里。

  3、选择芯片:STM32F407VG

图文解说:如何将STM32的标准库编译成lib库

  4、选择NO。因为这不是可运行的程序,这里不需要加入启动文件。

图文解说:如何将STM32的标准库编译成lib库

  5、创建完工程后,工程结构如图:

图文解说:如何将STM32的标准库编译成lib库

  6、MDK中点击工具栏上的图文解说:如何将STM32的标准库编译成lib库设置工程结构,并将库文件加入工程:

  为了通用,我将库中所有的C文件都加入了工程

图文解说:如何将STM32的标准库编译成lib库

  7、完成后MDK下的目录结构:

图文解说:如何将STM32的标准库编译成lib库

  8、MDK下设置输出选项:

  工程选项中设置输出,选择输出lib到目录E:\学习\ARM\库\stm32f4-2\lib\:

图文解说:如何将STM32的标准库编译成lib库

  9、设置C语言预编译宏和引用目录:

  因为要使用STM32F4标准库,预编译选项设置:USE_STDPERIPH_DRIVER,STM32F4XX

  将刚才拷贝的inc和工程根目录文件夹加入引用:

图文解说:如何将STM32的标准库编译成lib库

  10、设置完成后:

图文解说:如何将STM32的标准库编译成lib库

  11、将stm32f4xx_conf.h文件拷贝到工程:

  这个文件需要在标准库提供的示例工程中找:

  我使用的是\STM32F4-Discovery_FW_V1.1.0\Project\Peripheral_Examples\ADC3_DMA\stm32f4xx_conf.h

  这个文件引用了库文件中所有的头文件。因为不包含在库中,我将这个文件拷贝到E:\学习\ARM\库\stm32f4-2文件夹。

  12、到此,工程设置完成。按F7编译,经过一支烟的时间即可生成库的lib。

  生成完成后,MDK工程中:

图文解说:如何将STM32的标准库编译成lib库

  13、工程输出目录:

图文解说:如何将STM32的标准库编译成lib库

  文件stm32f4lib.lib就是我们生成的lib文件

  14、将库文件加入该工程

  15、新建工程,我命名成stm32f4use,处理器依旧选择STM32F407VG。

图文解说:如何将STM32的标准库编译成lib库

  16、这是选择yes,因为这是一个可执行的工程:

图文解说:如何将STM32的标准库编译成lib库

  17、将标准库示例工程的\STM32F4-Discovery_FW_V1.1.0\Project\Peripheral_Examples\ADC3_DMA中的system_stm32f4xx.c拷贝到工程目录(E:\学习\ARM\库\stm32f4-2)中

  18、再次点击菜单上的图文解说:如何将STM32的标准库编译成lib库设置工程目录结构,将刚才生成的lib库加入到工程中:

图文解说:如何将STM32的标准库编译成lib库

  19、将示例工程\STM32F4-Discovery_FW_V1.1.0\Project\Peripheral_Examples\ADC3_DMA中的system_stm32f4xx.c拷贝到工程目录。

  20、将main.c和 system_stm32f4xx.c 加入到工程

图文解说:如何将STM32的标准库编译成lib库

  21、完成后的目录结构:

图文解说:如何将STM32的标准库编译成lib库

  22、加入编译选项

  与上边生成lib相似,预编译选项设置:USE_STDPERIPH_DRIVER,STM32F4XX

  引用目录:.\inc;..\stm32f4-2 (这里的.\inc;..文件夹就是刚才建立库时候的文件夹)

  输出可执行文件:

图文解说:如何将STM32的标准库编译成lib库

  23、添加几行简单的代码

  //点亮一个LED

  #include <stm32f4xx.h>

  #include "stm32f4xx_conf.h"

  #include "stm32f4xx_tim.h"

  int main()

  {

  GPIO_InitTypeDef GPIO_InitStructure;

  RCC_AHB1PeriphClockCmd(RCC_AHB1Periph_GPIOD,ENABLE);

  GPIO_InitStructure.GPIO_Mode = GPIO_Mode_OUT;

  GPIO_InitStructure.GPIO_OType = GPIO_OType_PP;

  GPIO_InitStructure.GPIO_Pin = GPIO_Pin_12;

  GPIO_InitStructure.GPIO_PuPd = GPIO_PuPd_NOPULL;

  GPIO_InitStructure.GPIO_Speed = GPIO_Speed_2MHz;

  GPIO_Init(GPIOD,&GPIO_InitStructure);

  GPIO_SetBits(GPIOD,GPIO_Pin_12);

  while(1);

  }

  24、工程设置完成,按F7试试。现在编译速度快起来了,点个烟的时间就编译完了
 

公司简介

宜科(天津)电子有限公司是中国工业自动化的领军企业,于2003年在天津投资成立,销售和服务网络覆盖全国。作为中国本土工业自动化产品的提供商和智能制造解决方案的供应商,宜科在汽车、汽车零部件、工程机械、机器人、食品制药、印刷包装、纺织机械、物流设备、电子制造等诸多领域占据领先地位。宜科为智慧工厂的整体规划实施提供自系统层、控制层、网络层到执行层自上而下的全系列服务,产品及解决方案涵盖但不局限于云平台、MES制造执行系统、工业现场总线、工业以太网、工业无线通讯、机器人及智能设备组成的自动化生产线、自动化电气控制系统集成、智能物流仓储系统等,以实现真正智能化的生产制造,从而带来生产力和生产效率的大幅提升,以及对生产灵活性和生产复杂性的管理能力的大幅提升。多年来,宜科以创新的技术、卓越的解决方案和产品坚持不懈地为中国制造业的发展提供全面支持,并以出众的品质和令人信赖的可靠性、领先的技术成就、不懈的创新追求,在业界独树一帜。帮助中国制造业转型升级,加速智能制造进程,成为中国工业4.0智慧工厂解决方案当之无愧的践行者。

更多详情>>

联系我们

  • 联系人:章清涛
  • 热线:18611695135
  • 电话:
  • 传真:
  • 邮箱:18210150532@139.com

Copyright © 2015 ilinki.net Inc. All rights reserved. 智汇工业版权所有

电话:010-62314658 邮箱:service@ilinki.net

主办单位:智汇万联(北京)信息技术有限公司

京ICP备15030148号-1