1. ホーム
  2. c

[解決済み] ATMEGA168A - F_CPU 警告

2022-02-13 04:52:25

質問

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);
    }
}

コンパイラが以下のような警告を出しています。

Warning     #warning "F_CPU not defined for <util/delay.h>"

この警告はここから出ています(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

何が間違っているのでしょうか?私の宣言は間違っているのでしょうか?

どうすればいいですか?

を定義する必要があります。 F_CPU の前にインクルードする必要があります。 コンパイル時にコマンドラインから行うこともできますし、ソースに記述することもできます。 このシンボルを定義することは、ビルドシステムにあなたの特定のCPUの実行速度を知らせることです。 (つまり、この方法で実際の速度を変更することはできません)。

議論については http://www.avrfreaks.net/forum/understanding-fcpu