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. |