DIY编程器网

 找回密码
 注册

QQ登录

只需一步,快速开始

扫一扫,访问微社区

查看: 1242|回复: 0
打印 上一主题 下一主题

[待整理] 将STM32的标准库编译成lib库

[复制链接]
跳转到指定楼层
楼主
发表于 2014-10-12 14:31:14 | 只看该作者 |只看大图 回帖奖励 |倒序浏览 |阅读模式
以前一直使用STM32的标准库,需要一步步地将代码加进去,将编译选项设置好,然后再编译整个工程。这个编译过程是一个相当慢的过程!完全编译大约需要一支烟的时间。每次建立工程都这么编译,是一个相当浪费时间和香烟的过程。
         
        于是,我有了将库编译成lib文件的想法。本文就是我将STM32F4的标准库编译成lib文件并在工程中使用的过程。
         
        适用对象:
           
  •                 熟悉库,不想再看库里边代码       
  •                 有稳定的库,库文件更新不频繁       
  •                 库文件多,每次编译时间长
         
        下面是我将STM32F4的标准库编译成lib并在工程中使用的过程:
         
        1、建立创建lib的工程
         
        2、将库文件拷贝到工程目录:
         
        将库里边目录\STM32F4xx_StdPeriph_lib v1.0.2\STM32F4xx_StdPeriph_Driver下的inc和src两个文件夹拷贝到预创建工程的目录。我计划在目录E:\学习\ARM\库\stm32f4-2中创建库。于是我将两个文件夹拷贝到了这里。
         
        3、选择芯片:STM32F407VG
         
        [url=http://upload.semidata.info/new.eefocus.com/article/image/2013/07/18/51e78ed851720.png] [/url]
         
        4、选择NO。因为这不是可运行的程序,这里不需要加入启动文件。
         
        [url=http://upload.semidata.info/new.eefocus.com/article/image/2013/07/18/51e78ed991b76.png] [/url]
         
        5、创建完工程后,工程结构如图:
         
        [url=http://upload.semidata.info/new.eefocus.com/article/image/2013/07/18/51e78edfc0d2c.png] [/url]
         
        6、MDK中点击工具栏上的[url=http://upload.semidata.info/new.eefocus.com/article/image/2013/07/18/51e78ee04fe1c.png] [/url]设置工程结构,并将库文件加入工程:
         
        为了通用,我将库中所有的C文件都加入了工程
         
        [url=http://upload.semidata.info/new.eefocus.com/article/image/2013/07/18/51e78ee2dbe33.png] [/url]
         
        7、完成后MDK下的目录结构
         
        [url=http://upload.semidata.info/new.eefocus.com/article/image/2013/07/18/51e78ee43ff61.png] [/url]
         
        8、MDK下设置输出选项:
         
        工程选项中设置输出,选择输出lib到目录E:\学习\ARM\库\stm32f4-2\lib\:
         
        [url=http://upload.semidata.info/new.eefocus.com/article/image/2013/07/18/51e78ee54696e.png] [/url]
         
        9、设置C语言预编译宏和引用目录:
         
        因为要使用STM32F4标准库,预编译选项设置:USE_STDPERIPH_DRIVER,STM32F4XX
        将刚才拷贝的inc和工程根目录文件夹加入引用:
         
        [url=http://upload.semidata.info/new.eefocus.com/article/image/2013/07/18/51e78ee6e778b.png] [/url]
         
        10、设置完成后:
         
        [url=http://upload.semidata.info/new.eefocus.com/article/image/2013/07/18/51e78ee86546b.png] [/url]
         
        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工程中:
         
        [url=http://upload.semidata.info/new.eefocus.com/article/image/2013/07/18/51e78ef3df784.png] [/url]
         
        13、工程输出目录:
         
        [url=http://upload.semidata.info/new.eefocus.com/article/image/2013/07/18/51e78ef9d1b24.png] [/url]
         
        文件stm32f4lib.lib就是我们生成的lib文件
         
        14、将库文件加入该工程
         
        15、新建工程,我命名成stm32f4use,处理器依旧选择STM32F407VG。
         
        [url=http://upload.semidata.info/new.eefocus.com/article/image/2013/07/18/51e78efb3ef53.png] [/url]
         
         
        16、这是选择yes,因为这是一个可执行的工程:
         
        [url=http://upload.semidata.info/new.eefocus.com/article/image/2013/07/18/51e78efbe830f.png] [/url]
         
        17、将标准库示例工程的\STM32F4-Discovery_FW_V1.1.0\Project\Peripheral_Examples\ADC3_DMA中的system_stm32f4xx.c拷贝到工程目录(E:\学习\ARM\库\stm32f4-2)中
         
        18、再次点击菜单上的[url=http://upload.semidata.info/new.eefocus.com/article/image/2013/07/18/51e78efc74786.png] [/url]设置工程目录结构,将刚才生成的lib库加入到工程中:
         
        [url=http://upload.semidata.info/new.eefocus.com/article/image/2013/07/18/51e78efdca862.png] [/url]
         
        19、将示例工程\STM32F4-Discovery_FW_V1.1.0\Project\Peripheral_Examples\ADC3_DMA中的system_stm32f4xx.c拷贝到工程目录。
         
        20、将main.c和 system_stm32f4xx.c 加入到工程
         
        [url=http://upload.semidata.info/new.eefocus.com/article/image/2013/07/18/51e78eff3a6c9.png] [/url]
         
        21、完成后的目录结构:
         
        [url=http://upload.semidata.info/new.eefocus.com/article/image/2013/07/18/51e78f006c682.png] [/url]
         
        22、加入编译选项
         
        与上边生成lib相似,预编译选项设置:USE_STDPERIPH_DRIVER,STM32F4XX
        引用目录:.\inc;..\stm32f4-2 (这里的.\inc;..文件夹就是刚才建立库时候的文件夹)
        输出可执行文件:
         
        [url=http://upload.semidata.info/new.eefocus.com/article/image/2013/07/18/51e78f01790cc.png] [/url]
         
        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试试。现在编译速度快起来了,点个烟的时间就编译完了
分享到:  QQ好友和群QQ好友和群 QQ空间QQ空间 腾讯微博腾讯微博 腾讯朋友腾讯朋友 微信微信
收藏收藏 分享分享 支持支持 反对反对
您需要登录后才可以回帖 登录 | 注册

本版积分规则

小黑屋|文字版|手机版|DIY编程器网 ( 桂ICP备14005565号-1 )

GMT+8, 2025-8-9 12:24 , 耗时 0.096239 秒, 21 个查询请求 , Gzip 开启.

各位嘉宾言论仅代表个人观点,非属DIY编程器网立场。

桂公网安备 45031202000115号

DIY编程器群(超员):41210778 DIY编程器

DIY编程器群1(满员):3044634 DIY编程器1

diy编程器群2:551025008 diy编程器群2

QQ:28000622;Email:libyoufer@sina.com

本站由桂林市临桂区技兴电子商务经营部独家赞助。旨在技术交流,请自觉遵守国家法律法规,一旦发现将做封号删号处理。

快速回复 返回顶部 返回列表