以往写过的所有stm32工程经过编译,均报出七八百个错误,是否是keil5软件的设置不对呢,该如何解决呢
标识符"uint16_t"未定义,要在<stdint.h>头文件里添加#include <string.h>和#include <stdint.h>,也可能是keil工程的模版框架创建的有问题,换一个新的模版能跑通demo的,再把你目前的代码和需要的库函数添加进去。
#include "stm32f10x.h"语句要放在.h文件里,之前都是一直放在.c文件里的。他是先编译头文件,所以如果放在h文件里,c文件里就不用再写了,但是如果放在c文件里,如果h文件也要用的话还要在h文件再写一次
stdint.h 头文件中定义的 uint16_t 等数据类型未定义
建议贴出报错,这样比图片更清晰点
整体思路:
1、编译器版本和设备型号是否匹配
2、项目中的头文件和源文件是否正确
3、项目中的库文件是否正确
4、编译器设置是否正确?例:正确设置了编译器版本、设备型号和头文件路径等。
5、尝试重新生成工程
错误提示是给人看的,根据错误提示去分析啊,里面提到大量的都是uint16_t这个类型没找到定义,这个不是C语言标准类型,肯定是代码自己定义的,而你的工程里缺少这个定义导致,可能是缺少缺了定义,也可能是定义了,但是包含的头文件路径设置错误。
看第一个错误就能解决了
应该是这个错误导致
解决这个错误 后面uinit16_t应该就可以了’
未定义,在. h文件中typedef uint_16 unsigned short 就可以了
undefined identifier是指在编译时,编译器无法识别某个标识符,通常是因为没有正确引用头文件或者定义变量时出现了错误。
解决方法:
1.检查是否正确引用头文件,如果没有,则正确引用头文件。
2.检查变量定义是否正确,如果不正确,则修改变量定义。
3.检查是否有重复定义,如果有,则删除重复定义。
从错误日志来看,虽然报了很多错误,但看着都是同一个或同一个类型的错误。其中undefined identifier是未定义的标志符,在程序内使用了没有被定义的标志符或者变量,或者没有引入正确的头文件。建议加上以下头文件:
#include "sys.h"