STM32项目添加格外HAL库

需求

  • 在STM32CubeMX中创建项目时,如果只选择了“仅复制必要库文件”(Copy only the necessary library files),生成的代码只会包含项目中已启用的外设对应的HAL源文件。

  • 若后期需要新增未启用的外设(如新的UART、TIMER等),需要手动添加对应的HAL库文件。

已下是添加步骤

注意 我的项目是使用CMake进行管理的

获取完整HAL库

  1. 访问ST官网下载对应系列(如F1、F4)的完整Cube包:STM32Cube MCU和MPU包

  2. 下载并解压后,HAL库源码位于 Drivers/STM32F1xx_HAL_Driver 目录下。

复制所需文件到项目中

文件路径如图

YourProject/
├── Drivers/
│   ├── CMSIS/              # CubeMX生成
│   └── STM32F1xx_HAL_Driver/
│       ├── Inc/            # HAL头文件,文件添加到这里
│       └── Src/            # HAL源文件,文件添加到这里
└── CMakeLists.txt          # 项目主CMake文件

修改CMake配置

通常CubeMX生成的CMake项目会在 Drivers/STM32F1xx_HAL_Driver 目录下有一个子 CMakeLists.txt,用于管理所有HAL源文件。

在指定位置添加对应c文件

# STM32 HAL/LL Drivers  
set(STM32_Drivers_Src  
    ${CMAKE_CURRENT_SOURCE_DIR}/../../Core/Src/system_stm32f1xx.c  
    ${CMAKE_CURRENT_SOURCE_DIR}/../../Drivers/STM32F1xx_HAL_Driver/Src/stm32f1xx_hal_gpio_ex.c  
    ${CMAKE_CURRENT_SOURCE_DIR}/../../Drivers/STM32F1xx_HAL_Driver/Src/stm32f1xx_hal_uart.c  
    ${CMAKE_CURRENT_SOURCE_DIR}/../../Drivers/STM32F1xx_HAL_Driver/Src/stm32f1xx_hal_usart.c  
    ${CMAKE_CURRENT_SOURCE_DIR}/../../Drivers/STM32F1xx_HAL_Driver/Src/stm32f1xx_hal_tim.c  
    ${CMAKE_CURRENT_SOURCE_DIR}/../../Drivers/STM32F1xx_HAL_Driver/Src/stm32f1xx_hal_tim_ex.c  
)

启用HAL模块宏定义

在 stm32f1xx_hal_conf.h 中启用对应模块。

进入文件搜索对应头文件,发现导入头文件语句是灰的,需要将对应宏定义的注释删除

#ifdef HAL_TIM_MODULE_ENABLED  
#include "stm32f1xx_hal_tim.h"  // 这些导入语句是灰的,因为对应宏定义被注释了
#endif /* HAL_TIM_MODULE_ENABLED */  
  
#ifdef HAL_UART_MODULE_ENABLED  
#include "stm32f1xx_hal_uart.h"  
#endif /* HAL_UART_MODULE_ENABLED */  
  
#ifdef HAL_USART_MODULE_ENABLED  
#include "stm32f1xx_hal_usart.h"  
#endif /* HAL_USART_MODULE_ENABLED */

将宏定义的注释删除

#define HAL_UART_MODULE_ENABLED   // 取消这行的注释
#define HAL_TIM_MODULE_ENABLED    // 取消这行的注释

现在就可以使用库函数了,导入stm32f1xx_hal.h文件就可以使用对应的句柄和函数了,因为stm32f1xx_hal.h以及包含了stm32f1xx hal conf.h头文件

posted @ 2025-12-22 10:16  PC2005-cloud  阅读(9)  评论(0)    收藏  举报