1. 编译时出现Undefined symbol EXTI_Init (referred from exti.o).
解决:
①检查头文件路径是否添加
②检查相对应的库是否添加。 此处最容易忽略,而本人的错误是没有添加库文件stm32f10x_exti.c
2. 出现 Symbol xxx multiply defined (by exti.o and main.o).
问题:即变量xxx被多重定义,具体出现的原因未知
解决:把定义的变量放在主文件main.c中,在exti.h中添加extern来外部引用此变量来用。
注:一般变量的定义都不能在.h文件中,因为.h文件会出现被引用的情况,容易出现多重定义,而全局变量的定义一般在.c文件中,在对应的.h文件中用extern来引用。
3. 使用ST-Link下载程序时出现“Invalid ROM Table”错误
原因:可能是因为程序运行超频导致的。
解决:
step1:先断电开发板,再把开发板上的BOOT0接电位1,接着keil下载配置修改一下:进入Debug--Settings--Flash Download页面,把Program、Verify、Reset and Run前面的勾干掉下载程序,即擦除。
step2:接下来把开发板上的BOOT0换回电位0,再恢复keil下载配置,即勾选上rogram、Verify、Reset and Run,然后即可正常下载。
注意:这只是恢复下载的办法,然后可以下载原先正常的程序。导致的根本原因是最近的一次程序不正常,程序内部的晶振频率设置错误导致。
那么,其实造成这个结果的程序并不是本次下载提示这个错误的程序,而是上次的下载导致,只不过是下载此程序的时候才发现而已。解决这个错误提示用以上方法,不然开发板被锁死什么程序都下载不了了。
解决根源用以下方法:找到上次下载的程序,其实是程序里的晶振配置与外部实际的晶振配置不匹配导致的。
step1:修改此文件stm32f4xx.h,结合外部实际晶振,修改这个值,并不一定是25,只不过本人的是25
step2:修改system_stm32f4xx.c,修改的值同步骤1.
4. keil在调试退出时,经常出现“Encountered an improper argument”提示,不能正常退出。
此时,只有关闭后台进程,才能关闭Keil。
原因:遇到不正确参数,往往是因为创建工程时,使用的是中文所致。比如此路径出现“01 脉冲检测_编码器”即不是正确参数,改为英文。
解决:把路径文件夹的中文改为英文即可。软件对中文的支持性不好所致,比较老的版本其实是可以的。