[STM32F1] 有没有什么方法可以减少SystemClock_Config的代码大小

[复制链接]
 楼主| 咚了个咚 发表于 2025-6-28 09:15 | 显示全部楼层 |阅读模式
本帖最后由 咚了个咚 于 2025-7-28 22:15 编辑


使用STM32CubeIDE创建一个Bootloader程序。有没有什么方法可以减少SystemClock_Config的代码大小,
这样就可以将引导加载程序降低到4k以内
磨砂 发表于 2025-7-5 09:54 | 显示全部楼层
在STM32CubeMX中直接设置时钟源(如HSE/HIL/PLL)和分频参数,工具会自动生成精简的[size=0.875]SystemClock_Config代码。避免手动修改生成的代码,减少冗余逻辑
晓伍 发表于 2025-7-5 12:18 | 显示全部楼层
在CubeMX的“Clock Configuration”选项卡中,关闭未使用的外设时钟
八层楼 发表于 2025-7-5 14:52 | 显示全部楼层
如果Bootloader对时钟精度要求不高,可以直接调用[size=0.875]HAL_RCC_OscConfig[size=0.875]HAL_RCC_ClockConfig等函数,避免自定义复杂的时钟配置逻辑
观海 发表于 2025-7-5 17:36 | 显示全部楼层
删除与Bootloader功能无关的时钟配置,仅保留核心时钟设置
guanjiaer 发表于 2025-7-5 20:13 | 显示全部楼层
在STM32CubeIDE的编译选项中启用优化,编译器会自动精简代码尺寸
heimaojingzhang 发表于 2025-7-6 08:04 | 显示全部楼层
将时钟配置中的重复代码封装为宏或函数,减少代码行数
keaibukelian 发表于 2025-7-6 10:38 | 显示全部楼层
检查[size=0.875]SystemClock_Config中是否存在调试用的日志输出或断言,这些代码会显著增加代码体积,需在Release版本中移除。
paotangsan 发表于 2025-7-6 12:52 | 显示全部楼层
void SystemClock_Config(void) {
    RCC_OscInitTypeDef RCC_OscInitStruct = {0};
    RCC_ClkInitTypeDef RCC_ClkInitStruct = {0};

    // 配置时钟源(例如HSE)
    RCC_OscInitStruct.OscillatorType = RCC_OSCILLATORTYPE_HSE;
    RCC_OscInitStruct.HSEState = RCC_HSE_ON;
    RCC_OscInitStruct.PLL.PLLState = RCC_PLL_ON;
    RCC_OscInitStruct.PLL.PLLSource = RCC_PLLSOURCE_HSE;
    RCC_OscInitStruct.PLL.PLLMUL = RCC_PLL_MUL6; // 根据需求调整倍频
    HAL_RCC_OscConfig(&RCC_OscInitStruct);

    // 配置系统时钟和总线时钟
    RCC_ClkInitStruct.ClockType = RCC_CLOCKTYPE_HCLK | RCC_CLOCKTYPE_SYSCLK
                                | RCC_CLOCKTYPE_PCLK1 | RCC_CLOCKTYPE_PCLK2;
    RCC_ClkInitStruct.SYSCLKSource = RCC_SYSCLKSOURCE_PLLCLK;
    RCC_ClkInitStruct.AHBCLKDivider = RCC_SYSCLK_DIV1; // AHB无分频
    RCC_ClkInitStruct.APB1CLKDivider = RCC_HCLK_DIV1;  // APB1无分频
    RCC_ClkInitStruct.APB2CLKDivider = RCC_HCLK_DIV1;  // APB2无分频
    HAL_RCC_ClockConfig(&RCC_ClkInitStruct, FLASH_LATENCY_WS); // 根据频率设置Flash延迟
}


renzheshengui 发表于 2025-7-6 15:36 | 显示全部楼层
条件编译:根据Bootloader的实际需求,通过[size=0.875]#ifdef排除不必要的配置分支
wowu 发表于 2025-7-6 17:58 | 显示全部楼层
通过STM32CubeMX自动生成基础配置、复用HAL库函数、优化编译选项和移除冗余代码,可以显著减少[size=0.875]SystemClock_Config的代码大小
您需要登录后才可以回帖 登录 | 注册

本版积分规则

41

主题

50

帖子

0

粉丝
快速回复 在线客服 返回列表 返回顶部