Цитата(zltigo @ Jan 18 2017, 11:09)

Ну Вы и не ленивый читать галиматью написанную в силе "= 0x00000002;"

Я лично не стал.
Я прочитал просто потому, что много работал с LPC-шной периферией и помню почти наизусть её, тем более таймера - почти самое простое там.
Тем более они не изменились при переходе на Cortex LPC17xx/LPC43xx.
Так бы да - и читать бы не стал.
Цитата(zltigo @ Jan 18 2017, 11:09)

Все биты и константы должны иметь ИМЕНА.
Насчёт первого (битов в конфигурационных регистрах периферии) не совсем с Вами согласен.
Как правило, когда прописываешь их значения в какой-то регистр, всегда перед глазами открытая страничка с описанием этого регистра.
И мне например удобнее соотносить описания полей в мануале с исходником по номерам битов, а не их именам (которых может и не быть или быть неудобными).
Так что именно
для битовых полей в регистрах конфигурации периферии я отступаю от этого правила, и чаще всего прописываю так:
T0MCR = B0 | B1;
А точнее даже так:
concat(T, nTIM_nrf, MCR) = B0 | B1;
ну или через указатель.
Так как все назначения номеров таймеров, портов UART/SPI/... и пр. периферии у меня собраны в одном месте и нигде нет прямых ссылок на регистры периферии:
Код
//Распределение UART-ов
#define nUART_service 3 //номер UART сервисного порта
//Распределение GP-таймеров
#define nTIM_cpu 0 //таймер коротких интервалов
#define nTIM_intmon 1 //таймер контролЯ длительности запретов прерываний (длЯ отладки)
#define nTIM_nrf 2 //таймер драйвера nRF24L01+
//Распределение SSP-портов
#define nSSP_nrf 0 //nRF24L01+
где concat - это текстовая склейка :
Код
#define concatVOID
#define concat_SUBST2(a, b, c, d, e, f, g, h, i, j, k, l, ...) \
a##b##c##d##e##f##g##h##i##j##k##l
#define concat_SUBST(...) concat_SUBST2(__VA_ARGS__)
#define concat(...) concat_SUBST(__VA_ARGS__, concatVOID, concatVOID, \
concatVOID, concatVOID, concatVOID, concatVOID, concatVOID, concatVOID, \
concatVOID, concatVOID)