需求
- 在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 目录下。
复制所需文件到项目中
文件路径如图- 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头文件
来源:程序园用户自行投稿发布,如果侵权,请联系站长删除
免责声明:如果侵犯了您的权益,请联系站长,我们会及时删除侵权内容,谢谢合作! |
|
|
|
|
|
相关推荐
|
|
|