解决STM32CubeMX-Keil MDK报错error: L6236E: No section matches selector – no section to be FIRST/LAST问题
1.报错过程
学习正点原子HAL库开发教学视频时跟随操作出现,对应如下链接视频P35。
【【正点原子】手把手教你学STM32 HAL库开发全集【真人出镜】STM32入门教学视频教程 单片机 嵌入式】 第35讲 基础篇-新建STM32CubeMX工程步骤_哔哩哔哩_bilibili
软件版本:
STM32CubeMX | 6.3.0 |
---|---|
Keil MDK | 5.36 |
2.报错原因
error: L6236E: No section matches selector – no section to be FIRST/LAST.
翻译:错误:L6236E:没有节与选择器匹配-没有节是第一个/最后一个。
这是在编译时发现的Error,其实使用STM32CubeMX生成Project工程文件时也会出现报错提示:
but MDK-ARM V5.32project generation have a problem.
只不过当时开倍速看视频没有注意到这个操作的不同,所以一定要仔细看视频操作!
出现这个错误的原因是没有驱动文件,也就是缺少后缀为.s的文件,与本工程对应的文件为startup_stm32f103xe.s
也就是下面的文件:
错误原因有以下两种:
①跟随视频操作失误
可能出现遗漏或操作失误情况,这种情况要多次对比操作是否正确,排除这种错误方式才能确定是下面的问题。
②路径过深或者中文路径
首先确保跟随视频操作正确,无遗漏或误操作情况。
如果操作正确,依旧出现这种错误,则可能是因为路径深浅原因导致,或者不同版本的STM32CubeMX版本对于中文的兼容性不一致。
此前学习正点原子视频时,有说过Keil的MDK不同版本对中文的兼容性不一致,路径过深或者中文路径可能导致异常,没想到STM32CubeMX也有这种问题。
因此建议统一都用英文路径,并且不要设置过深的路径,从根本上杜绝路径问题这种可能
3.解决方法
解决方法如下:
方法①:
不管是什么原因引起的报错,将启动文件添加至对应Project即可,操作如下:
注意文件后缀为.s
PS:如果是从官网下载下的.s文件需要注释掉如下图所示的三行不然会报另一个link错误 -> “undefined symbol…”,这点正点原子教学视频中有讲到。
方法②:
如果是路径问题则把路径改好,重新生成,永绝后患。
参考文章:
http://t.csdn.cn/NVEm1
http://t.csdn.cn/nhGOj
作者:王家寧