STM32F HAL库太大
我的微控制器项目的闪存用完了。我如何减少HAL库的大小,或者以其他方式使它在我的项目中所占的比例降低?只有一种方法——停止使用HAL库,在寄存器级别执行它。如果HAL的大小很重要,请使用small micro,这是唯一的方法。是否尝试将编译器标志设置为STM32F HAL库太大,stm32,stm32-hal,Stm32,Stm32 Hal,我的微控制器项目的闪存用完了。我如何减少HAL库的大小,或者以其他方式使它在我的项目中所占的比例降低?只有一种方法——停止使用HAL库,在寄存器级别执行它。如果HAL的大小很重要,请使用small micro,这是唯一的方法。是否尝试将编译器标志设置为-Os?尝试: 使用编译器的-ffunction节和-fdata节,链接器的-gc节消除未使用的代码和数据(“垃圾收集”) 使用链接器和编译器的-O2-flto进行链接器时间优化(LTO) 如果您准备在便携性和易用性方面妥协,您可以使用ST提供的
-Os
?尝试:
- 使用编译器的
和-ffunction节
,链接器的-fdata节
消除未使用的代码和数据(“垃圾收集”)-gc节
- 使用链接器和编译器的
进行链接器时间优化(LTO)-O2-flto
- 一组函数,用于根据需要初始化外围设备的主要功能 在数据结构中指定的参数
- 用于填充初始化数据结构的一组函数 每个字段的重置值
- 执行外围设备反初始化(外围设备)的功能 寄存器恢复为其默认值)
- 一组用于直接和原子寄存器访问的内联函数
- 完全独立于HAL,因为LL驱动程序可以在 独立模式(无HAL驱动程序)或混合模式(有HAL驱动程序) (司机)
除了所有这些出色的响应之外,我想补充一点,
HAL
可以在stm32f3xx\u HAL\u conf.h
中配置,以禁用未使用的模块
/**
* @brief This is the list of modules to be used in the HAL driver
*/
#define HAL_MODULE_ENABLED
#define HAL_ADC_MODULE_ENABLED
#define HAL_CAN_MODULE_ENABLED
/* #define HAL_CAN_LEGACY_MODULE_ENABLED */
#define HAL_CEC_MODULE_ENABLED
#define HAL_COMP_MODULE_ENABLED
#define HAL_CORTEX_MODULE_ENABLED
#define HAL_CRC_MODULE_ENABLED
#define HAL_DAC_MODULE_ENABLED
#define HAL_DMA_MODULE_ENABLED
#define HAL_FLASH_MODULE_ENABLED
#define HAL_GPIO_MODULE_ENABLED
#define HAL_HRTIM_MODULE_ENABLED
#define HAL_I2C_MODULE_ENABLED
#define HAL_I2S_MODULE_ENABLED
#define HAL_IRDA_MODULE_ENABLED
#define HAL_IWDG_MODULE_ENABLED
#define HAL_OPAMP_MODULE_ENABLED
#define HAL_PCD_MODULE_ENABLED
#define HAL_PWR_MODULE_ENABLED
#define HAL_RCC_MODULE_ENABLED
#define HAL_RTC_MODULE_ENABLED
#define HAL_SDADC_MODULE_ENABLED
#define HAL_SMARTCARD_MODULE_ENABLED
#define HAL_SMBUS_MODULE_ENABLED
#define HAL_SPI_MODULE_ENABLED
#define HAL_TIM_MODULE_ENABLED
#define HAL_TSC_MODULE_ENABLED
#define HAL_UART_MODULE_ENABLED
#define HAL_USART_MODULE_ENABLED
#define HAL_WWDG_MODULE_ENABLED
从多维数据集中limport项目时的标准选项。大多数IDEs.PS上的标准选项我会非常小心地建议新手用户LTO@P__J__1.我既不使用HAL也不使用llapi。我看到的一些项目没有启用垃圾收集,我得出的结论是默认情况下没有启用垃圾收集。2.在我看来,如果某个程序(非深奥但深奥的程序不是新手编写的)在启用LTO后崩溃,那么它的格式就不正确,即使没有LTO,它也会在一到二十次更改后崩溃。什么垃圾收集。它只是没有链接死代码和数据。@P_uj_u_uu来自gcc文档:值得注意的是,虽然您应该验证,但是集成在STM32CubeIDE中的MX配置工具创建样板项目会自动注释出相关行。