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 и что это такое? |