KEIL5是个强大的软件,但也会莫名其妙报一些错误与警告的软件(编程没问题),昨晚我编写定时器中断程序的时候差点崩溃,网上找了一晚上的资料都没能解决问题,后来我一行行对比代码才发现了问题所在。下面的记录就是关于我使用MDK5时出现过的一些error,分享我踩过的坑。
- 需要新行
- 不知道哪里来的x
- 本文标题的错误
(1):添加新行
这个警告容易解决,在最后面加一个新行就行了
(2):打开文件就出现的x:
编译没报错,这是编译器本身的bug,把这个main.c关掉再打开,就不会报错了,如下:
(3):这篇文章的重点;出现了标题那个错误,我找到的解决方法有下面几个:
-
检查C/C++窗口的头文件路径:
-
一般情况下是这个的原因,但是我昨晚在编写定时器中断程序的时候编译器不知道出了什么原因,保证了路径添加上去了还是报这个错,今天我对比了原子哥的代码,发现了我缺少了一个头文件:“sys.h”,添加上去了,就没有再报错了,如果.h文件没有添加"sys.h",调用HAL_TIM_Base_Init()时会出现这样的错误:
添加进去后:
编译通过,然后我们看一下sys.h里面的内容:
如果在使用定时器的时候没有包含sys.h头文件,编译器在编译的时候就会找不到相关的定义,才会报错。所以,如果你在使用定时器中断时出现错误,确定了一般情况没有问题,不妨试试改这个地方。最好还是拿原子的标准例程进行开发,毕竟自己新建工程模板需要的时间太长,跟着新建一次就好,不用每次都新建,既节约时间又不容易出错。 -
如果上面的错误尝试了很多方法都没能解决,那么就重装MDK,尽量别装中文版和汉化,破解就行了。