☰
STM32CubeMX 生成keil工程 编译报错 解决方法
2026/10/28 2:00:49 网站建设 项目流程

Keil 报错 L6236E:No section matches selector - no section to be FIRST/LAST 解决(以STM32F429为例)

报错核心原因:链接脚本.sct指定了FIRST优先排布的段(一般是中断向量表段),链接器在所有目标文件中找不到对应的段,绝大多数场景是缺少启动文件导致。

常见原因

最常见原因:启动文件没加进工程检查startup_stm32f429xx.s是否在工程的 Source Group 里:

  • 在 Keil 左侧工程树中看 Drivers/CMSIS/... 或 Application/MDK-ARM 分组下有没有 startup_stm32F429xx.s
  • 如果没有:右键分组 → Add Existing Files → 找到对应文件添加进工程

重要提醒:文件存在磁盘文件夹 ≠ 已经加入 Keil 工程,CubeMX 经常生成了文件,但没有写入工程 uvprojx 索引。

四种获取、添加启动文件的方法

方法一:CubeMX 工程文件夹里其实有(优先查找)

CubeMX 生成工程时会把启动文件放在这个路径:

你的工程文件夹\Drivers\CMSIS\Device\ST\STM32F4xx\Source\Templates\arm\startup_stm32f429xx.s

先打开工程所在文件夹,按文件名搜索startup_stm32f429xx。如果存在,直接Add Existing Files加进 Keil 工程就行。

方法二:从 STM32CubeF4 固件包复制

如果你电脑上装了 STM32CubeF4(CubeMX 下载固件时会存到本地,例如C:\Users\xxx\STM32Cube\Repository\STM32Cube_FW_F4),去这个路径拿文件:

\STM32Cube_FW_F4\Drivers\CMSIS\Device\ST\STM32F4xx\Source\Templates\arm\startup_stm32f429xx.s

复制到你工程文件夹(建议放到 MDK-ARM 目录下),再添加进 Keil。

方法三:CubeMX 重新生成代码(根治方案)

如果工程里连 Drivers\CMSIS 文件夹都不完整,说明当初生成工程时出现异常。回到 CubeMX:

  1. Project Manager → Project 里确认 Toolchain 选的是 MDK-ARM V5
  2. Code Generator 标签页按需配置,关键是重新点击GENERATE CODE正常情况下,重新生成后的工程启动文件会自动就位。

方法四:从例程拷贝(兜底方案)

这个启动文件对于同型号芯片内容固定,找任意一份 F429 的 Keil 例程(正点原子、野火、开源 GitHub 工程等),把里面的startup_stm32f429xx.s拷贝过来使用。

添加启动文件后必做校验步骤

  1. 添加完成后,右键startup_stm32f429xx.s→Options for File,勾选Include in Target Build;只加到工程树、不勾选编译,依然会报同样错误。
  2. 芯片型号严格匹配,必须使用startup_stm32f429xx.s,不能混用 F407、F446 等其他型号启动文件。

需要专业的网站建设服务?

联系我们获取免费的网站建设咨询和方案报价,让我们帮助您实现业务目标

立即咨询