stm32f103: a timer triggering DMA to update another timer's CCR using libopencm3
you have 2 issues. First, You must give TIM1_CCR1 address, I recommend to use the macro TIM_CCR1() for this task:
dma_set_peripheral_address(DMA1, DMA_CHANNEL2, (uint32_t)&amp;TIM_CCR1(TIM1));

Second, You are forgetting to enable the update event in the TIM2 config:
timer_enable_irq(TIM2, TIM_DIER_UDE);

Good luck!