Цитата(SSerge @ Oct 17 2013, 15:35)

Да, правильно, только не 0x002C, а смещение до регистра в словах.
TIM2->DCR = (&(TIM2->ARR) - &(TIM2->CR1))/sizeof(TIM2->CR1)
или
TIM2->DCR = offsetof(TIM_TypeDef, ARR)/4
и DMA должно писать в DMAR 32-битными словами.
Фантастика! Действительно заработало - огромное спасибо SSerge, но кто бы мог подумать...
Во-первых, механизм работы через DCR/DMAR в основном описании таймеров отсутствует - есть только описание самих регистров, но туда далеко не все заглядывают (особенно при работе через библиотеки периферии).
Во-вторых, DMA и в самом деле заработал только при описании и массива в памяти и регистра DMAR как 32-битных слов, и это при том, что в перечислении основных функций DMA заявлено автоматическое преобразование форматов, а сам регистр DMAR в библиотеке описан как uint16_t.
Зело загадочна микросхема STM32F207

.