今天在使用KEIL 5写STM32程序的时候,出现了一个错误:
Error: L6218E: Undefined symbol test_for_diaodu (referred from main.o).
具体表现为,不管我把自己写的一个my.c里的什么函数或者变量名,即使在main.c中声明、引用了,一直都出这个错误——Undefined symbol xxxxxx (referred from main.o)
网上搜了别人各种各样的回答,也都没能解决,于是怀疑到这个看着像四叶草一样的东西上面来
于是打开浏览器搜了一下,发现网上只有人说了怎么解决,解决方案也是只言片语的,经过我的尝试,终于发现了这个 长得像四叶草一样的标识如何解决。
把解决方法当个随笔写下来,顺便也算是学习一下KEIL这块儿相关的知识了。
(浅浅的看了一下这块儿的内容,一知半解的给大家介绍一下)
很长一段时间,我写STM32代码都很喜欢用Cube IDE,觉得带自动补全、界面简洁、调试方便,最近想学点儿之前不会的,比如自己写boot loader实现程序的在线更新,又或者使用内部flash存储部分用户数据,可以动态的保存一些配置参数,而不需要重新烧录。看了相关的文章几乎都是用KEIL出的教程,也不知道是Cube IDE不如KEIL细还是因为本身比较新,那我也再次试试这个看字费眼睛的IDE吧。
题外话说完了,根据搜索,发现Keil为项目中的每个文件,都预留了灵活的设置属性。
例如可以单独设置某个源文件,参不参与编译;项目的说明性文件 .txt 或 .md文件,如何不参与编译,避免 因为说明性文件,导致的编译报错,还有一系列其他的用法, 我也是看了几篇文章,才有了点了解,有兴趣的可以看看,连接我放文章末尾了。
对于项目内的文件,点击右键,在弹出菜单的第一项为
“Options for File 'xxxxx'...
点开之后会有两个选项卡,"Properties" 和 "C/C++"
出现 雪花就是因为这个 里面的配置项,被修改过了,和默认模板的不一样
解决方法
想要消除雪花,只需要分别将两个标签页下方的 “Default”按钮,点击一下就行了
网上部分教程写的不详细,只说了点击 “Default”按钮 ,没说两个标签页下面的“Default”按钮都得点一下。
另外文章一开头的那个显示符号 未定义的错误,竟然是因为我写的.c文件没有被添加到工程中来,我之前明明添加过,后面怎么没了,真实叫人摸不着头脑。
相关参考链接
STM32在keil下开发时候文件options配置的一些小技巧 - 知乎
【KEIL 】Options for File - 壹点灵异 - 博客园