MDK编译报错:Undefined symbol TIM3_PWM_Init (referred from main.o)
一、问题出现:
最近跟着正点原子学到了STM32的PWM内容,运行了该内容的程序时,发现运行结果有个错误:Undefined symbol TIM3_PWM_Init (referred from main.o)
具体的程序如下:
二、尝试多种方法并定位问题所在:
第一次遇到这问题,在网上参考大量文章资料并试了几种解决方法,最后定位问题所在:main.c文件中调用了TIM3_PWM_Init没有定义.
Undefined symbol TIM3_PWM_Init (referred from main.o)
意为:TIM3_PWM_Init 在 main.c文件里被调用,但没被定义!【main.o由main.c编译过程中生成】,所以问题出在main.c文件或者是TIM3_PWM_Init的函数定义处。
定位到main.c文件后,我发现问题出在了TIM3_PWM_Init的函数定义这里,便定位到了timer.c的文件下的TIM3_PWM_Init的函数定义代码处!细细检查代码后发现确实是这里出的错!
三、改进的、快速检查函数定义出错的方法:
定位到错误代码行——Go to Definition Of "TIM3_PWM_Init——转不去则到函数定义里找问题
1.右键点击代码TIM3_PWM_Init(899,0);选择"Go to Definition Of “TIM3_PWM_Init”(转到“TIM3 PWM Init”的定义),发现跳不去!
2.一顿苦找,发现原来是timer.c里的函数TIM3写成了ITM3。由于电脑屏幕小的原因,我想在一堆代码里发现I跟T的区别可真不容易,搞得我一度怀疑是其他的原因导致程序运行有Bug!哭晕!
四、总结找问题的过程
1.网上大量阅读相关资料!
2.在1的基础上辨别、理清自己的问题类型并找到可行的解决方案,可行的解决方案有多个就一个个去试!
3.依旧解决不了——重复1、2路径,直到问题真正解决!
本文内容由网友自发贡献,版权归原作者所有,本站不承担相应法律责任。如您发现有涉嫌抄袭侵权的内容,请联系:hwhale#tublm.com(使用前将#替换为@)