如何使用keil5将stm32的hal库编译成lib文件——F1版本

Posted codeworkerliming

tags:

篇首语:本文由小常识网(cha138.com)小编为大家整理,主要介绍了如何使用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定位比较难,因此适合于调试成熟后使用。

以上是关于如何使用keil5将stm32的hal库编译成lib文件——F1版本的主要内容,如果未能解决你的问题,请参考以下文章

STM32CubeMX(01)基于HAL库点亮LED

Keil5创建HAL库版本的STM32F103ZET6工程,实现简单的LED亮灭demo

STM32 HAL 是不是应该作为预编译库包含在内

STM32cubemx-HAL库串口断线问题

小熊派开发笔记-串口读取RS485输出的土壤七合一传感器数据(基于STM32CubeMX)

使用HAL库开发STM32:ADC基础使用