博客 / 詳情

返回

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頭文件

user avatar
0 位用戶收藏了這個故事!

發佈 評論

Some HTML is okay.