zoukankan      html  css  js  c++  java
  • 如何使用keil5将stm32的hal库编译成lib文件——F1版本


    hal库中keil5中编译的速度是比较慢的,相同情况下,每次都要编译的时候,比标准库是要慢很多的,因此就hal库编译成lib文件是一种加快编译速度的方法,当然也有其自身的缺点。
    一、步骤
    1、使用cubemx4.27做一个简单的系统,clock、rcc、sys、swd等配置好,其他可以不用配置。这里我使用了freertos,因此sys使用了tim6,并添加了swo的功能。

    2、生成keil工程
    3、去掉不相关的文件,如下图所示

    4、修改stm32f1xx_hal_conf.h文件,因为你在其他工程中,你将用到很多外设比如gpio、usart等等库文件,而你上面生成的没有使用任何外设,因此stm32f1xx_hal_conf.h文件很多宏定义是关掉的,这里把所有外设都打开(除了#define HAL_EXTI_MODULE_ENABLED)这个外部中断在4.27的f1库(1.6.1)中是没有的,这个需要注意下,否则编译无法生成lib文件的。

    下图罗列了部分宏定义

    5、在output选项中,选中lib输出文件,编译即可生成lib文件,lib比较大,我的是20MB左右。

    6、然后在另外的工程中,去掉hal库文件,添加lib文件,注意将lib文件放到src目录即可,这样可以代替hal的源文件。

    7、编译后通过即可。虽然lib文件比较大,但是最后生成的hex文件并不大的,只是把相关用到的函数包含到keil工程中的,这个可以放心使用。

    二、优缺点
    优点:
    加快编译速度。文件半保密。
    缺点:
    调试的时候,是无法进入hal文件的,这样底层知识就碰得少了。

    总结:
    lib文件可以加速编译速度,而且是静态文件,而且不担心代码被修改。稳定性是比较高的。其实可以作为半保密的文件,不给其他人看源代码,这样给别人代码,也不担心破解。但是调试的时候看不到源文件了,bug定位比较难,因此适合于调试成熟后使用。

  • 相关阅读:
    acm入门 杭电1001题 有关溢出的考虑
    面向对象课后深入学习(C++ 类的静态成员详细讲解)
    Eclipse中导入项目后js报错解决方法
    mysql用户链接数
    配置服务器nginx 教程
    eclipse如何新建项目发布到git
    获取当天开始时间结束时间
    pdf在线加载·
    springmvc配置详解 教程
    hibulder中使用git教程
  • 原文地址:https://www.cnblogs.com/CodeWorkerLiMing/p/11870790.html
Copyright © 2011-2022 走看看