将STM32的标准库编译成lib使用

发布者:mmsg3814最新更新时间:2021-05-17 来源: eefocus关键字:STM32  标准库  lib 手机看文章 扫描二维码
随时随地手机看文章

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


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


适用对象:


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


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


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


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


1、建立创建lib的工程


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


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


3、选择芯片:STM32F407VG


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

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



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


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


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

8、MDK下设置输出选项:


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



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


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


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



10、设置完成后:



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


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


我使用的是STM32F4-Discovery_FW_V1.1.0ProjectPeripheral_ExamplesADC3_DMAstm32f4xx_conf.h


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


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


生成完成后,MDK工程中:



13、工程输出目录:




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

14、将库文件加入该工程


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



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



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


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


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


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



21、完成后的目录结构:


22、加入编译选项


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


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


输出可执行文件:


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、工程设置完成,按F7试试。现在编译速度快起来了,点个烟的时间就编译完了

关键字:STM32  标准库  lib 引用地址:将STM32的标准库编译成lib使用

上一篇:STM32 l053r8 的低功耗模式
下一篇:STM32输入捕获简介

推荐阅读最新更新时间:2024-11-06 10:39

基于STM32执行的MQTT协议
单片机源程序如下: /* USER CODE END Header */ /* Includes ------------------------------------------------------------------*/ #include main.h #include tim.h #include usart.h #include gpio.h /* Private includes ----------------------------------------------------------*/ /* USER CODE BEGIN Includes */ #include string.
[单片机]
STM32 GPIO的API函数配置和使用技巧
一、前言 本篇开始对 STM32 的GPIO在实际开发设计中的使用配置和技巧进行探讨,可以先去回顾下之前介绍的GPIO的相关理论基础知识包括基本结构,工作模式和 寄存器 原理。 了解过STM32的GPIO相关的理论知识,这样在应用GPIO开发过程中,能更好的理解GPIO的特点,应用起来会更加的得心应手。 后续将从以下图1中所示的几个方面对G PI O应用设计中的步骤展开介绍。 本篇先介绍GPIO的基本API函数定义,配置初始化的流程,以及使用技巧; 针对将GPIO的引脚用于外部中断的功能将作为单独的一篇进行详细的讨论介绍。 图1 GPIO应用设计 二、API函数 STM32有多种类型的库,本节所介绍的STM32的GPIO
[单片机]
<font color='red'>STM32</font> GPIO的API函数配置和使用技巧
STM32 I2C从机发送数据
stm32 I2C主机发送功能在网上有很多例程,调试也很容易,从机发送数据的介绍很少,鉴于本人刚开始调试单片机程序不久,花了一整天也没调试通,最后在部门领导的帮助下,通过示波器及单步调试程序,查看寄存器状态值,终于实现了。下面主要介绍下从机发送数据注意事项。(附带例程) 1、相信使用I2C的都知道,从机是不能主动发送数据的,开始条件都是由主机生成。 2、根据参考文档,I2C默认是从机模式,只有在生成起始条件后,才会从从机模式自动切换到主机模式。所以作为从机模式使用时不能生成起始条件。 3、附图1,为从机发送器的传送时序图,截图于参考手册,图中说明部分讲述了怎样能清除事件,这点很重要,每次事件是都要去清除才可以去检测下一
[单片机]
<font color='red'>STM32</font> I2C从机发送数据
STM32串口接收丢失字符
重定向使用MicroLib 串口波特率设置为115200 单个字符发送,大部分操作无反馈,少部分操作有正确反馈; 1.修改串口波特率为9600 有所改善,但并未解决问题 2.修改串口中断优先级为抢占有限级 1 子优先级 3 无改善 3.停止使用串口中断,使用查询标志位方式完成接收 问题解决
[单片机]
STM32基于固件库学习笔记(10)窗口看门狗
窗口看门狗 (WWDG) 小容量产品是指闪存存储器容量在16K至32K字节之间的STM32F101xx、STM32F102xx和STM32F103xx微控制器。 中容量产品是指闪存存储器容量在64K至128K字节之间的STM32F101xx、STM32F102xx和STM32F103xx微控制器。 大容量产品是指闪存存储器容量在256K至512K字节之间的STM32F101xx和STM32F103xx微控制器。 互联型产品是指STM32F105xx和STM32F107xx微控制器。 WWDG 简介 窗口看门狗通常被用来监测,由外部干扰或不可预见的逻辑条件造成的应用程序背离正常的运行序列而产生的软件故障。除非递减计数
[单片机]
STM32的开漏电路与推挽输出
开漏结构 所谓开漏电路概念中提到的“漏”就是指MOS FET的漏极。同理,开集电路中的“集”就是指三极管的集电极。开漏电路就是指以MOS FET的漏极为输出的电路。一般的用法是会在漏极外部的电路添加上拉电阻。完整的开漏电路应该由开漏器件和开漏上拉电阻组成。如图1所示: 图1 组成开漏形式的电路有以下几个特点: 1. 利用外部电路的驱动能力,减少IC内部的驱动。当IC内部MOSFET导通时,驱动电流是从外部的VCC流经R pull-up ,MOSFET到GND。IC内部仅需很下的栅极驱动电流。如图1。 2. 可以将多个开漏输出的Pin,连接到一条线上。形成“与逻辑”关系。如图1,当PIN_A、PIN_B、PIN_C任
[单片机]
<font color='red'>STM32</font>的开漏电路与推挽输出
STM32架构受肯定 意法半导体稳居市场龙头
自从苹果电脑与宏达电不约而同于2008年推出划时代的新一代智慧型手机后,不仅引爆了智慧型手机与平板电脑的高度成长,更让行动装置成为消费市场最受欢迎的设备。而在市面上众多架构中,ARM架构处理器由于具备省电、运算速度快,所以自然成为各家厂商推出行动产品的首选。 随着平板电脑、智慧型手机快速普及,具备省电特性的ARM架构处理器,已经成为全球销售量成长速度最快的处理器。根据市场研究机构的调查报告指出,ARM架构处理器从2007年的13.6%,大幅成长到2010年的23.5%,其中以意法半导体STM32晶片为核心的Cortex-M系列,在ARM平台的市场占有率高达45%以上,而且还在持续增加中。 意法半导体产品行销经理杨正
[嵌入式]
STM32自定义printf实现多串口互用
STM32 串口使用频繁的朋友可能知道一个问题,库自带的 USART_SendData 函数一次只能发送 1 Byte 字符 如果我们要输出一个带格式、带参数的串口数据就只能通过 sprintf 打印到一个临时数组,然后再使用一个for循环调用USART_SendData一个字符一个字符的输出,过程非常麻烦! 姜斌是一个非常怕麻烦的人所以这种方法无疑让我发疯!后来在原子(OpenEDV)那里购买了开发板拿到了例程。里面重定向了printf函数作为串口输出函数,有了这个函数之后就能够很轻松的参数输出,但问题就在这里我们串口1 串口2 都要带参数输出怎么办? 本次实验:自定义printf函数 实验数据来源: 配置usart
[单片机]
小广播
设计资源 培训 开发板 精华推荐

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

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

换一换 更多 相关热搜器件
随便看看

 
EEWorld订阅号

 
EEWorld服务号

 
汽车开发圈

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