找回密码
 立即注册
首页 业界区 安全 STM32项目添加格外HAL库

STM32项目添加格外HAL库

乙荒 2 小时前
需求


  • 在STM32CubeMX中创建项目时,如果只选择了“仅复制必要库文件”(Copy only the necessary library files),生成的代码只会包含项目中已启用的外设对应的HAL源文件。
  • 若后期需要新增未启用的外设(如新的UART、TIMER等),需要手动添加对应的HAL库文件。
已下是添加步骤
注意 我的项目是使用CMake进行管理的

获取完整HAL库


  • 访问ST官网下载对应系列(如F1、F4)的完整Cube包:STM32Cube MCU和MPU包。
  • 下载并解压后,HAL库源码位于 Drivers/STM32F1xx_HAL_Driver 目录下。
复制所需文件到项目中

文件路径如图
  1. YourProject/
  2. ├── Drivers/
  3. │   ├── CMSIS/              # CubeMX生成
  4. │   └── STM32F1xx_HAL_Driver/
  5. │       ├── Inc/            # HAL头文件,文件添加到这里
  6. │       └── Src/            # HAL源文件,文件添加到这里
  7. └── CMakeLists.txt          # 项目主CMake文件
复制代码
修改CMake配置

通常CubeMX生成的CMake项目会在 Drivers/STM32F1xx_HAL_Driver 目录下有一个子 CMakeLists.txt,用于管理所有HAL源文件。
在指定位置添加对应c文件
  1. # STM32 HAL/LL Drivers  
  2. set(STM32_Drivers_Src  
  3.     ${CMAKE_CURRENT_SOURCE_DIR}/../../Core/Src/system_stm32f1xx.c  
  4.     ${CMAKE_CURRENT_SOURCE_DIR}/../../Drivers/STM32F1xx_HAL_Driver/Src/stm32f1xx_hal_gpio_ex.c  
  5.     ${CMAKE_CURRENT_SOURCE_DIR}/../../Drivers/STM32F1xx_HAL_Driver/Src/stm32f1xx_hal_uart.c  
  6.     ${CMAKE_CURRENT_SOURCE_DIR}/../../Drivers/STM32F1xx_HAL_Driver/Src/stm32f1xx_hal_usart.c  
  7.     ${CMAKE_CURRENT_SOURCE_DIR}/../../Drivers/STM32F1xx_HAL_Driver/Src/stm32f1xx_hal_tim.c  
  8.     ${CMAKE_CURRENT_SOURCE_DIR}/../../Drivers/STM32F1xx_HAL_Driver/Src/stm32f1xx_hal_tim_ex.c  
  9. )
复制代码
启用HAL模块宏定义

在 stm32f1xx_hal_conf.h 中启用对应模块。
进入文件搜索对应头文件,发现导入头文件语句是灰的,需要将对应宏定义的注释删除
  1. #ifdef HAL_TIM_MODULE_ENABLED  
  2. #include "stm32f1xx_hal_tim.h"  // 这些导入语句是灰的,因为对应宏定义被注释了
  3. #endif /* HAL_TIM_MODULE_ENABLED */  
  4.   
  5. #ifdef HAL_UART_MODULE_ENABLED  
  6. #include "stm32f1xx_hal_uart.h"  
  7. #endif /* HAL_UART_MODULE_ENABLED */  
  8.   
  9. #ifdef HAL_USART_MODULE_ENABLED  
  10. #include "stm32f1xx_hal_usart.h"  
  11. #endif /* HAL_USART_MODULE_ENABLED */
复制代码
将宏定义的注释删除
  1. #define HAL_UART_MODULE_ENABLED   // 取消这行的注释
  2. #define HAL_TIM_MODULE_ENABLED    // 取消这行的注释
复制代码
现在就可以使用库函数了,导入stm32f1xx_hal.h文件就可以使用对应的句柄和函数了,因为stm32f1xx_hal.h以及包含了stm32f1xx hal conf.h头文件

来源:程序园用户自行投稿发布,如果侵权,请联系站长删除
免责声明:如果侵犯了您的权益,请联系站长,我们会及时删除侵权内容,谢谢合作!

相关推荐

您需要登录后才可以回帖 登录 | 立即注册