avr-gcc: как в Makefile задавать и препроцессором проверять тактовую частоту Печать
Добавил(а) microsin   

Обычно это делается через макроопределение F_CPU, в котором задается тактовая частота в герцах.

Это макроопределение передается компилятору через опцию -D, например:

CFLAGS += -Wall -gdwarf-2 -DF_CPU=16000000UL -fsigned-char

В этом примере частота задана 16 МГц. В исходных текстах можно препроцессором проверять тактовую частоту, и в зависимости от этого формировать нужный код. Например:

//константа для TCNT0
#if F_CPU == 16000000
    #define TCNT0_10MS (256-156)        // 100 раз в секунду
    #define TCNT0_1MS  (256-16)         // 1000 в секунду
#elif F_CPU == 11059200
    #define TCNT0_10MS (256-108)        // 100 раз в секунду
    #define TCNT0_1MS  (256-11)         // 1000 в секунду
#elif F_CPU == 14745600
    #define TCNT0_10MS (256-144)        // 100 раз в секунду
    #define TCNT0_1MS  (256-14)         // 1000 в секунду
#elif F_CPU == 18432000
    #define TCNT0_10MS (256-180)        // 100 раз в секунду
    #define TCNT0_1MS  (256-18)         // 1000 в секунду
#else
    #error "Unsupported F_CPU value!"
#endif

[Ссылки]

1. avr-gcc: как в Makefile задавать и препроцессором проверять тип используемого AVR.
2Как устроен Makefile и что это такое?