最近看了百度手环开源项目,发现所有的算法都被封装成了一个lib文件在keil中调用 也是第一次学习到。
问题引出:为什么要做成lib库?
1、有些方案公司为了将自己写的关键部分源代码不进行公开,但是同时库文件又需要让别人能够正常调用,那封装成lib的格式就是一个好方法。
2、编译某些工程文件时非常耗时,像UCGUI和ST官方的库时,由于文件众多,编译一次可能得1两分钟,这时可以打包成库,这时编译工程时就不会再次编译库的文件,节省不少的时间。
唯一一点不好的是:不能用右键go to Definition 'XXX'来直接找到源文件定义了。但是一般别人都是测试好就封装成lib的
制作方法:以UCGUI为例
第一步:打开一个测试通过的工程。(如果本来要打包的库文件里面的代码有错的话,打包成库后也是不能用的,这步是关键)
测试没有问题后将不需要的部分删除,后如下图所示
第二步:打开KEIL MDK->Project->Option for target...->Output,选 中Create Executable:....选项。
第三步:重新编译,即可在原本生成Hex文件的目录下找到*.lib文件。
打开原工程,只需将原来的.c文件移除,添加进该.lib文件即可使用(程序调用要包含lib文件中c文件的所有头文件)。
特别注意的是:Lib的文件要分的细一点,没有调用关系的两个函数不要放到同一个C文件中. 没有调用关系的最好是一个函数单独放在一个.c文件中.这是为了避免在keil中应用程序调用lib库里出现告警.
关键字:STM32 Keil工程 Lib库文件
引用地址:
STM32学习笔记之Keil工程Lib库文件的制作和运用
推荐阅读最新更新时间:2024-03-16 15:36
意法半导体发布工业智能传感器评估套件
加快基于IO-Link 收发器和 STM32 MCU的应用设计 中国,2021年12月15日——以45.8mm x 8.3mm 的纤薄主板为亮点,意法半导体STEVAL-IOD04KT1工业传感器套件可简化开发者为独立于现场总线的点对点双向通信应用开发紧凑的IO-Link (IEC 61131-9) 传感器。 该主板集成了意法半导体的STM32G0微控制器和L6364W IO-Link收发器、IIS2MDC高精度3轴数字输出磁力计,以及内嵌机器学习核心的ISM330DHCX iNEMO惯性测量模块。得益于L6364W的2.5mm x 2.5mm 的CSP19微型芯片级封装和 STM32G0的2.3mm x 2.5mm
[传感器]
stm32单片机的基本组成是什么
stm32是一款高性能、低成本、低功耗、可裁剪的嵌入式单片机。那么stm32单片机的基本组成是什么呢?下面小编就为大家来介绍一下stm32单片机的基本组成。 大家都知道,单片机是由PC发展来的,优点有高可靠性、高抗干扰性、价格便宜,被广泛的应用在工业控制、医疗器械、信息通信等领域上。 STM32单片机内部由CPU、FLASH、RAM、总线、外设、电源、PLL锁相环和时钟管理器,只有电源不需要提供时钟输入,其他的外设和CPU的工作都需要提供时钟输入。 CPU cpu也叫中央处理器,有着备数据计算和指令执行的作用。 RAM RAM也叫数据存储器、随机存储器,能够可读可写。能够存储一些中间变量,数据丢失。 ROM rom也叫
[单片机]
STM32 ADC与DMA多通道处理
#define ADC1_DR_Address ((uint32_t)0x4001244C)//ADC1 DR寄存器基地址 DMA_InitTypeDef DMA_InitStructure; //DMA ADC_InitTypeDef ADC_InitStructure; //ADC #define ADC_CH 2 //通道数 #define ADC_num 10 //采集点数 vu16 After_filter ; //用来存放求平均值之后的结果 vu16 ADCConvertedValue ;//AD数据缓存 /*****************************************************
[单片机]
stm32基础知识学习——系统架构及时钟
1.stm32系统架构 stm32主要由两个主模块和四个从模块构成 1 二个主模块 : Cortex-M0 内核及先进高性能总线(AHB bus) 通用DMA ( GP-DMA – general-purpose DMA) 2 四个从模块 : 内部SRAM 内部闪存存储器 AHB 到APB 的桥, 所有的外设都挂在APB 总线上 专门用于连接GPIO 口的AHB2 内部由一个多层AHB 互联的系统总线 从上图中可以看出UART,I2C,RTC这些外设都是连接再APB总线上的,所以这些设备也就ABP外设
[单片机]
通过STM32外部中断触发DMA传输
目前STM32家族中的很多系列,比如STM32G0/STM32G4/STM32L4+/STM32H7等都内置了DMAMUX模块。有了它一方面使得DMA请求与DMA控制器之间的映射关系更为灵活方便,另一方面也大大拓展了DMA请求事件,不再局限于外设事件,比方基于GPIO的外部中断事件、或者DMA事件本身来触发DMA传输。 关于DMAMUX的基本结构及功能原理,这里就不说了,这里重点介绍基于STM32G4芯片,使用GPIO的外部中断事件触发DMA传输,通过DMA将内存数据传输到GPIO端口的实现过程,包括基于CubeMx的配置、关键代码及注意点。 本演示例程基于STM32G4系列的Nucleo板进行,按键【PC.13】用来触发
[单片机]
STM32学习笔记之USB库文件分析
主要分析下其他一些文件: usb_core.c、 usb_init.c、 usb_int.c、 usb_mem.c、 usb_reg.c usb_sil.c 1、 usb_core.c -- 这个文件从名字上就可知,这是usb的核心文件。这个文件主要是USB在枚举过程中的一些功能函数。比如控制传输的建立阶段、数据阶段、状态阶段的各种标准请求函数,各个阶段的处理函数等。 uint8_t Setup0_Process(void); uint8_t Post0_Process(void); uint8_t Out0_Process(void); uint8_t In0_Process(void); RESULT Standard_
[单片机]
STM32 can 实例代码
#include sysdef.h #define MAX_MAIL_NUM 3 //CAN总线调试:0=运行 1=自环调试 #define CAN_DEBUG 0 //CAN总线波特率:0=250kbps,1=500kbps,2=1Mbps #define CAN1_BPS 0 unsigned char can1_addr = 0; unsigned short Can1_Tx_Count =0; unsigned short Can1_Rx_Count =0; unsigned short Can1_Send_Delay =0; unsigned char Can1_Send_Buf ={0xe
[单片机]
STM32基础知识:中断系统
中断系统 1 数据传输方式 无条件传输 :处理器不必了解外部设备状态,直接进行数据传输,用于指示灯和按键等简单设备.。 查询方式 :传输前,一方先查询另一方的状态,若已经准备好就传输,否则就继续查询。 中断方式 :一方通过申请中断的方式与另一方进行数据传输,收发双方可以并行工作。 直接存储器访问 :处理器内部建立片内外设和内存之间的数据传输通道,传输过程不需要处理器参与。 2 中断系统的基本概念 2.1 中断全过程 中断发生: 当CPU在处理某一事件A时,发生了另一事件B,请求CPU迅速去处理。 中断处理: CPU暂停当前的工作,转去处理事件B。 中断返回: 当CPU将事件B处理完毕后,再回到事件A中被暂停的地方继
[单片机]