You're trying to initialize pointers to const from 8-bit values, and you don't notice because you're using a typedef to a pointer.
You want an immutable (const) array of pointers to (non-const) 8-bit __IO, i.e.
__IO uint8_t *const ccmrx[] = {
#ifdef NEED_TIMER_11_12
&(TIM1->CCMR1),
&(TIM1->CCMR2),
#endif
&(TIM1->CCMR3),
&(TIM1->CCMR4),
&(TIM2->CCMR1),
&(TIM2->CCMR2),
#ifdef NEED_TIMER_23
&(TIM2->CCMR3),
#endif
#ifdef NEED_TIMER_31_32
&(TIM3->CCMR1),
&(TIM3->CCMR2),
#endif
};
#define NUM_TIMERS (sizeof ccmrx / sizeof ccmrx[0])