STM32之如何编译出 .lib 文件

发布者:逍遥游侠最新更新时间:2015-10-29 来源: eefocus关键字:STM32  lib  文件 手机看文章 扫描二维码
随时随地手机看文章
申明: .lib 文件的一个“恶心”应用,就是必须给别人自己的代码应用,但是又不想直接给C源码,这时候就可以把某些机密 .c 文件编译成 .lib 文件给别人用。但是个人建议作为一个求学者,不要做这样的“恶心”事情。当然还有其它的一些作用。

 

这个是生成LIB的技巧.也许大家在网上看到某些程序会发现,他们用这个方式来包含STM32
的库文件:


而不是像DX32的例程那样一堆C:


那么,本技巧篇例程就是教大家怎么生成那个.LIB 的文件的.


首先打开本程序,大家看到的整个工程就只有库文件:


因为这是把STM32的函数库编译成库的形式,所以你只需要包含函数库就行.
然后注意一点,stm32f10x_conf.h 文件中,所有的include都要开放
#include "stm32f10x_adc.h"
#include "stm32f10x_bkp.h"
#include "stm32f10x_can.h"
#include "stm32f10x_crc.h"
#include "stm32f10x_dac.h"
#include "stm32f10x_dbgmcu.h"
#include "stm32f10x_dma.h"
#include "stm32f10x_exti.h"
#include "stm32f10x_flash.h"
#include "stm32f10x_fsmc.h"
#include "stm32f10x_gpio.h"
#include "stm32f10x_i2c.h"
#include "stm32f10x_iwdg.h"
#include "stm32f10x_pwr.h"
#include "stm32f10x_rcc.h"
#include "stm32f10x_rtc.h"
#include "stm32f10x_sdio.h"
#include "stm32f10x_spi.h"
#include "stm32f10x_tim.h"
#include "stm32f10x_usart.h"
#include "stm32f10x_wwdg.h"
#include "misc.h"
这是因为当这堆C文件编译成*.LIB后,里面的内容将是恒定的,不能裁减的.(这是C语言的理
念,跟编译器什么的无关),所以我们必须开放所有H 文件,这样编译出来的LIB 文件才是全能
的.这个理解,就和普通的DX32例程中包含一大堆C文件的意义是一样的.只不过是我们先把
库函数那部分预先编译成LIB 文件.
然后,就是选择编译成LIB:


编译后的库文件的名字是可定义的,这里随便改个名字叫LIB.


然后嘛,就是编译,编译完成后,LIST目录上就有一个LIB.lib文件了,注意文件的后缀名固定为
lib 的.
到这里,一个LIB文件就弄出来了,试试拿一个普通的DX32工程,然后把所有的函数库*.C文
件删除(注意.H 文件不要删除,因为你在程序中还要用.H 文件上的很多宏定义,例如
GPIO_Pin_1 这些宏定义),之后再加进这个LIB.lib,注意记得选择正确的文件类型:
加进去后,就可以像往常那样编译你的工程了.
到此,LIB的生成和应用就完成了。

但有以下的缺点是不容忽略的:
1.为了通用,你必须把整个库都编译,这样在程序中就不方便裁减,例如我不用SPI功能,以前
的方式就是在stm32f10x_conf.h 中屏蔽掉一些include,但这个LIB 方式却不行.即使你在
工程中保留了stm32f10x_conf.h 文件,并修改它,但这对已经编译成LIB 的库文件的大小
和内容不产生影响
2.不方便观察库函数,经过预编译的LIB 文件,里面的所有东西都不能以C 的形式看到了,
这样对于学习来说,是有不少影响的.

3.(本人所注)可以把自己的某些机密.c文件一起编译成.lib文件,这样可以保密自己的C源文件。(再次申明,作为求学大军中的一员,别这样做,相互学习,才能进步更快!)


关键字:STM32  lib  文件 引用地址:STM32之如何编译出 .lib 文件

上一篇:初探STM32通用定时器
下一篇:stm32之uCGUI移植

推荐阅读最新更新时间:2024-03-16 14:37

STM32单片机I/O的工作模式
最近有个朋友在设计低功耗设备,用的是STM32的主控,他知道我做过很多类似的超低功耗项目,于是向我咨询了一些问题,其中就包括I/O口的几种工作模式。今天我就详细的来总结一下这几种工作模式,让大家在以后的设计中知其然也知其所以然。 先说说GPIO 在聊这8种工作模式之前,我想先说一下GPIO的概念—通用输入输出GeneralPurposeInputOutput简称GPIO,就是芯片引脚可以通过它们输出高、低电平,也可以通过他们输入、读取引脚的电压、电平状态。 下面的8种工作模式我将围绕下图进行分析介绍,读懂这一张图大家基本就可以完全理解STM32的GPIO了。希望大家仔细的看一看。 四种不同的输出模式 推挽输出:该模式下引脚
[单片机]
<font color='red'>STM32</font>单片机I/O的工作模式
STM32各系列MCU性能对比及测试说明
1写在前面 我们经常听见某手机发布会,安兔兔跑分多少多少,其实这个跑分就是体现手机性能的一个指标。 我们使用STM32开发产品,选择MCU时,一般会综合考虑MCU各方面性能。 对于MCU来说,一个重要指标是功耗,还有一个重要指标就是性能。 当我们进入ST官方微控制器网页,就会发现ST将MCU划分为不同层次,如下图: https://www.st.com/en/microcontrollers.html 从上面层次关系,大致可以了解ST 各MCU的功耗和性能。 2 STM32 CoreMark跑分 STM32家族的32位微控制器基于ARM Cortex®-M处理器设计,为用户提供新的自由度。 产品
[单片机]
<font color='red'>STM32</font>各系列MCU性能对比及测试说明
cortex_m3_STM32嵌入式学习笔记18之DAC实验
STM32 的 DAC 模块(数字/模拟转换模块)是 12 位数字输入,电压输出型的 DAC。 DAC可以配置为 8 位或 12 位模式,也可以与 DMA 控制器配合使用。 DAC 工作在 12 位模式时,数据可以设置成左对齐或右对齐。 DAC 模块有 2 个输出通道,每个通道都有单独的转换器。在双 DAC 模式下, 2 个通道可以独立地进行转换,也可以同时进行转换并同步地更新 2 个通道的输出。 本节实验,我们将利用按键(或 USMART) 控制 STM32 内部 DAC1来输出电压,通过 ADC1的通道1 采集 DAC的输出电压,在 LCD 模块上面显示 ADC 获取到的电压值以及 DAC 的设定输出电压值等信息。 S
[单片机]
STM32系统定时器-SysTick
SysTick-系统定时器是CM3内核中的一个外设,内嵌在NVIC中,所有基于CM3内核的单片机都具有这个系统定时器,系统定时器一般用于操作系统,用于产生时基,维持操作系统的心跳。系统定时器是一个24bit的向下递减的计数器,计数器计数一次的时间为1/SYSCLK,一般我们设置系统时钟SYSCLK等于72M。 因为SysTick属于内核外设,跟普通外设的中断优先级有区别,并没有抢占优先级和子优先级的说法,内核外设的中断优先级由内核SCB这个外设寄存器配置。 1.SYSTick寄存器介绍 系统定时器有4个寄存器,使用SysTick产生定时时候,只需要配置前面三个,最后一个校准寄存器不需要使用。 SysTick控制及状态寄
[单片机]
<font color='red'>STM32</font>系统定时器-SysTick
STM32库函数USART_SendData的缺陷和解决方法
2.1 问题及现象 使用USART_SendData()函数非连续发送单个字符是没有问题的;当连续发送字符时(两个字符间没有延时),就会发现发送缓冲区有溢出现象。若发送的数据量很小时,此时串口发送的只是最后一个字符,当发送数据量大时,就会导致发送的数据莫名其妙的丢失。 如: for(TxCounter = 0;TxCounter RxCounter; TxCounter++) USART_SendData(USART1, RxBuffer ); 2. 原因 此API函数不完善,函数体内部没有一个判断一个字符是否发送完毕的语句,而是把数据直接放入发送缓冲区,当连续发送数据时,由于发送移位寄存器的速度限制(与通信波特率有关),导
[单片机]
STM32,KEIL,MDK新建一个工程
目前感觉这样的文件结构安排最为合理。首先在选定文件夹下建立如下文件: 然后根据芯片,将相关文件放入对应文件夹中,现在以STM32F103RCT6为例。将STM32F10x_StdPeriph_Lib_V3.5.0LibrariesCMSISCM3DeviceSupportSTSTM32F10x目录下的stm32f10x.h,system_stm32f10x.h,system_stm32f10x.copy到core文件下,STM32F10x_StdPeriph_Lib_V3.5.0ProjectSTM32F10x_StdPeriph_Template下的stm32f10x_conf.h复制到core下,其下的stm32f10x
[单片机]
<font color='red'>STM32</font>,KEIL,MDK新建一个工程
基于stm32f103zet6的FAT16文件系统学习4
本博文所用到的代码: http://download.csdn.net/detail/king_bingge/5739167 好几天没有写博客了,这几天都在忙挑战杯的事情,由于某些不和谐因素,昨天才开始准备今天的挑战杯答辩,虽然不知道结果是怎样的,但是个人感觉创新点还是有的,就是主评委老师拽着我们这个消费对象来说事,过去了就不再想了,也不知道能不能进入省赛,但是学习还是要继续的,今天总结的这个实验是实现从SD卡里面读bmp图片,bin图片,同时在将我制作的字库存放在SD卡中,从里面读取所需要的汉字,虽然之前早就实现了bmp图片读取和字库的读取,但是一直困扰我的就是bin格式的图片读取,今天下午花了些时间终于弄出来的,刷图是比bm
[单片机]
stm32 串口格式化打印字符串 函数封装
#include iostream #include windows.h //********************************************** #include stdarg.h #include stdio.h int uart_printf(void* UartHandle,char* buf,size_t bufLen, const char *fmt, ...) { va_list arg; int cnt; #if 1 va_start(arg, fmt); cnt = vsnprintf(buf, bufLen, fmt, arg); //生成的字符串的长度至多
[单片机]
小广播
添点儿料...
无论热点新闻、行业分析、技术干货……
设计资源 培训 开发板 精华推荐

最新单片机文章
何立民专栏 单片机及嵌入式宝典

北京航空航天大学教授,20余年来致力于单片机与嵌入式系统推广工作。

换一换 更多 相关热搜器件
电子工程世界版权所有 京B2-20211791 京ICP备10001474号-1 电信业务审批[2006]字第258号函 京公网安备 11010802033920号 Copyright © 2005-2024 EEWORLD.com.cn, Inc. All rights reserved