ATMEGA168A-F_CPU警告

Bob*_*Bob 3 c avr atmega

我编写了以下代码,以使ATMEGA168A闪烁一个小的led:

#include <avr/io.h>
#include <util/delay.h>

#define F_CPU 1000000UL

int main(void)
{
    DDRB = 0b00000010;
    PORTB = 0b00000000;

    while(1)
    {
        PORTB ^= 1 << 1;
        _delay_ms(1000);
    }
}
Run Code Online (Sandbox Code Playgroud)

编译器向我发出如下警告:

Warning     #warning "F_CPU not defined for <util/delay.h>"
Run Code Online (Sandbox Code Playgroud)

这是此警告的来源(delay.h)

#ifndef F_CPU
/* prevent compiler error by supplying a default */
# warning "F_CPU not defined for <util/delay.h>"
# define F_CPU 1000000UL
#endif
Run Code Online (Sandbox Code Playgroud)

我在这里做错了什么?我的声明不正确吗?

don*_*edo 6

您需要定义 F_CPU在包含之前。您可以在编译时在命令行上执行此操作,也可以将其放在源代码中。定义此符号的目的是让构建系统知道特定CPU的运行速度。(即,您不必以此方式更改实际速度)。

有关讨论,请参见http://www.avrfreaks.net/forum/understanding-fcpu