The STM32 HAL contains definitions like TIM_CR1_CKD_Msk
or TIM_CR1_CKD_Pos
which you can use to make it easier to read or write parts of a register.
Reading a part of a register
uint32_t ckd = (TIM1->CR1 & TIM_CR1_CKD_Msk) >> TIM_CR1_CKD_Pos;
Writing a part of a register
uint32_t new_ckd_value = TIM_CLOCKDIVISION_DIV4; // example TIM1->CR1 &= TIM_CR1_CKD_Msk; // Clear bits TIM1->CR1 |= new_ckd_value << TIM_CR1_CKD_Pos; // Set bits