一、检查有没有添加头文件或者源文件
1、头文件
添加 举例子:Error: L6218E: Undefined symbol MX_SPI1_Init (referred from w25q64.o).中MX_SPI1_Init函数所在头文件,或者w25q64.c文件的头文件,如w25q64.h
记得选完一定点 确定 。
2.添加源文件
添加 举例子:Error: L6218E: Undefined symbol MX_SPI1_Init (referred from w25q64.o).中w25q64.c文件
二、添加条件编译
keil工程同时有c文件和CPP文件时,c文件的函数在cpp文件中是无法直接访问的。
解决办法如下
1、
#include "XXX.h" 改为
extern "C"
{
#include "XXX.h"
}
2、或者在头文件的头和尾添加条件编译
#ifndef __MAIN_H
#define __MAIN_H
#ifdef __cplusplus
extern "C" {
#endif
..........
#include "xxxx.h"
..........
#ifdef __cplusplus
}
#endif
#endif /* __MAIN_H */
三、删除static关键字
如使用stm32cube_mx自动生成工程代码时,定义的SystemClock_Config初始化函数,会在前面固定加入 static,这样使得外部文件无法调用此函数。解决方法是删除该关键字,函数定义和声明里的都要删,最好的解决办法是自己重新定义,重新写一个初始化函数。我比较懒,直接删了就用。