zoukankan      html  css  js  c++  java
  • STM32自己的封装库

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

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

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

    适用对象:

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

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

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

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

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

    1、建立创建lib的工程

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

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

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

    3、选择芯片:STM32F407VG

    image

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

    image

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

    image

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

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

    image

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

    image

    8、MDK下设置输出选项:

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

    image

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

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

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

    image

    10、设置完成后:

    image

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

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

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

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

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

    生成完成后,MDK工程中:

    image

    13、工程输出目录:

    image

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

    14、将库文件加入该工程

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

    image

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

    image

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

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

    image

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

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

    image

    21、完成后的目录结构:

    image

    22、加入编译选项

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

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

    输出可执行文件:

    image

    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试试。现在编译速度快起来了,点个烟的时间就编译完了

  • 相关阅读:
    python 执行sql得到字典格式数据
    python爬虫 url链接编码成gbk2312格式
    windows环境下elasticsearch安装教程(单节点)
    python SQLServer 存储图片
    爬虫的本质是和分布式爬虫的关系
    requests form data 请求 爬虫
    mysql 删除 binlog 日志文件
    查看mysql数据表的大小
    xshell 连接报错 Disconnected from remote host
    centos 7.3 安装 mysqldb 报错 EnvironmentError: mysql_config not found ERROR: Command errored out with exit status 1: python setup.py egg_info Check the logs for full command output.
  • 原文地址:https://www.cnblogs.com/luckytimor/p/6902117.html
Copyright © 2011-2022 走看看