Цитата(Obam @ Mar 28 2018, 18:18)

Символические имена, соответствующие даташиту или рефману, вместо "просто номеров битов" будут более красивы и существенно эффективны.
Ну да, ну да. Как же. Всё в мире относительно.
Вот например набор символических имён
только для одного из регистров USIC в XMC4xxx:
CODE
#define USIC_CH_RBCTR_DPTR_Pos
#define USIC_CH_RBCTR_DPTR_Msk
#define USIC_CH_RBCTR_LIMIT_Pos
#define USIC_CH_RBCTR_LIMIT_Msk
#define USIC_CH_RBCTR_SRBTM_Pos
#define USIC_CH_RBCTR_SRBTM_Msk
#define USIC_CH_RBCTR_SRBTEN_Pos
#define USIC_CH_RBCTR_SRBTEN_Msk
#define USIC_CH_RBCTR_SRBINP_Pos
#define USIC_CH_RBCTR_SRBINP_Msk
#define USIC_CH_RBCTR_ARBINP_Pos
#define USIC_CH_RBCTR_ARBINP_Msk
#define USIC_CH_RBCTR_RCIM_Pos
#define USIC_CH_RBCTR_RCIM_Msk
#define USIC_CH_RBCTR_SIZE_Pos
#define USIC_CH_RBCTR_SIZE_Msk
#define USIC_CH_RBCTR_RNM_Pos
#define USIC_CH_RBCTR_RNM_Msk
#define USIC_CH_RBCTR_LOF_Pos
#define USIC_CH_RBCTR_LOF_Msk
#define USIC_CH_RBCTR_ARBIEN_Pos
#define USIC_CH_RBCTR_ARBIEN_Msk
#define USIC_CH_RBCTR_SRBIEN_Pos
#define USIC_CH_RBCTR_SRBIEN_Msk
#define USIC_CH_RBCTR_RBERIEN_Pos
#define USIC_CH_RBCTR_RBERIEN_Msk
Теперь представьте, что для того чтобы сконфигурить этот самый USIC в режиме UART надо записать значения в пару десятков его регистров.
И для каждого - подобная портянка.
С "символическими именами" портянка получается очень даже зубодробительная - чёрт ногу сломит в таких портянках.
И какой смысл от неё? Если битов десяток - то ещё можно запомнить, что значит каждое из этих имён, но когда в этой периферии регистров - несколько десятков, да в каждом - до 32 конфигурационных битов - один фиг без pdf перед глазами не вспомнить их назначение. А по мануалу гораздо удобнее искать по номерам битов чем по этим зубодробительным именам.
Лучше уж я напишу:
Код
io->RBCTR = ch + UART_FIFO_TX_SIZE |
UART_FIFO_RX_SIZE / 2 - 1 << 8 | (srTxRxErr & 7 << 3) << 16 - 3 |
srTxRxErr >> 6 << 19 | 3 << 22 |
concat(USIC_FIFO_SIZE_, UART_FIFO_RX_SIZE) << 24 |
B15 | B28 | B30 | B31;
А когда надо что-то поменять - всё равно залезу в мануал.
PS: Так что не надо всё мерить по STM32 с его скудной периферией в 2-3 регистра.