c语言库文件编译,STM32标准库编译成lib库文件

目录:

1、建立创建lib的工程

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

3、选择芯片:STM32F407VG

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

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

6、MDK中点击工具栏上的d71341c6606eea71ba1d30009b7d29eb.png设置工程结构,并将库文件加入工程

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

8、MDK下设置输出选项

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

10、设置完成后

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

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

13、工程输出目录

14、将库文件加入该工程

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

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

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

18、再次点击菜单上的bdb733c612341154e5280f8cd4a37e3d.png设置工程目录结构,将刚才生成的lib库加入到工程中

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

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

21、完成后的目录结构

22、加入编译选项

23、添加几行简单的代码

24、工程设置完成

--------------------------------------------------------------------------------------------------------------------------------

以前一直使用STM32的标准库,需要一步步地将代码加进去,将编译选项设置好,然后再编译整个工程。

这个编译过程是一个相当慢的过程!完全编译大约需要一支烟的时间。每次建立工程都这么编译,是一个相当浪费时间和香烟的过程。

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

适用对象:1、熟悉库,不想再看库里边代码

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

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

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

使用工具链:MDK4.70A。其实各个工具链几乎是一样的

1、建立创建lib的工程

------------------------------------

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

将库里边目录\STM32F4xx_StdPeriph_lib v1.0.2\STM32F4xx_StdPeriph_Driver下的inc和src两个文件夹拷贝到预创建工程的目录。

我计划在目录E:\学习\ARM\库\stm32f4-2中创建库。于是我将两个文件夹拷贝到了这里。

------------------------------------

3、选择芯片:STM32F407VG

57aaa5e58b198bb8a4064c65ca4cdf5b.png

------------------------------------

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

b3f31468303a3fbe9017d1a1e6db5c15.png

------------------------------------

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

ecd2d550f65cffc08ce8a46f42ad9e84.png

------------------------------------

6、MDK中点击工具栏上的42c8726c297f260117111bde15ebffad.png设置工程结构,并将库文件加入工程:

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

0e8041b0514b13e3069999b594dfce21.png

------------------------------------

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

c8b10b9734322b19e2fd69a061b5d1f6.png

------------------------------------

8、MDK下设置输出选项:

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

8b4dda0d40b47553d691f4557fa403fc.png

------------------------------------

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

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

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

9006c7c85c3b384bac2c709df2c26697.png

------------------------------------

10、设置完成后:

4f46a00effd334801a4bd16ce2236e54.png

------------------------------------

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工程中:

1583e78533b7fa2405e53f9ddbe91c7b.png

------------------------------------

13、工程输出目录:

2e279c909b83136af613efe9c124aef7.png

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

------------------------------------

14、将库文件加入该工程

------------------------------------

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

59677f3f2e8ddc8ad274ebfda0067893.png

------------------------------------

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

07009f74d371ee1e527d2ab4f16fea19.png

------------------------------------

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

------------------------------------

18、再次点击菜单上的eb7622793f8579c61cf10d059f5e451d.png设置工程目录结构,将刚才生成的lib库加入到工程中:

620bdc4f7eddd1d29b092d30b01bb257.png

------------------------------------

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

------------------------------------

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

b448c3a4bb6e3438c64a020afd2cf3e0.png

------------------------------------

21、完成后的目录结构:

3dd2d815efd2f7a365c1fa5ac19396e2.png

------------------------------------

22、加入编译选项

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

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

3)输出可执行文件:

815faa82fd6753a96c1bd897efc5afaf.png

------------------------------------

23、添加几行简单的代码

//点亮一个LED

#include

#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、工程设置完成

--------------------------------------------------------------------------------------------------------------------------------

  • 0
    点赞
  • 1
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值