问题描述及原因探究:
在AVR程序编写的过程中,如果使用了延时函数,在包含 util/delay.h 头文件后,编译会报一个警告——
F_CPU not defined for \<util/delay.h\>
该警告出现的原因是因为单片机在进行延时时需要通过其所使用的晶振频率来计算时间,从而保证延时的准确性。如果没有为延时函数提供正确的频率的话,延时会出现不准确的情况。
当然,如果没有进行宏定义的话,delay.h中会自行添加一个频率,“#define F_CPU 1000000UL”,但是该频率并非我们所使用的频率会导致程序延时错乱。
解决办法:
查看单片机上晶振的频率,然后根据该频率值,在包含延时头文件 “util/delay.h”前先进行宏定义,如:
#define F_CPU 7372800UL #include <util/delay.h>
注:
频率数值后面的 UL 表示该数值为 unsigned long 类型, 不要省去。