stm32l0: rcc: add rcc_set_peripheral_clk_sel(periph, sel)
This commit is contained in:
parent
8668f9198b
commit
a652856533
@ -695,6 +695,8 @@ void rcc_clock_setup_pll(const struct rcc_clock_scale *clock);
|
||||
|
||||
void rcc_set_msi_range(uint32_t msi_range);
|
||||
|
||||
void rcc_set_peripheral_clk_sel(uint32_t periph, uint32_t sel);
|
||||
|
||||
void rcc_set_lptim1_sel(uint32_t lptim1_sel);
|
||||
void rcc_set_lpuart1_sel(uint32_t lpupart1_sel);
|
||||
void rcc_set_usart1_sel(uint32_t usart1_sel);
|
||||
|
@ -435,6 +435,7 @@ void rcc_set_usart1_sel(uint32_t usart1_sel)
|
||||
RCC_CCIPR &= ~(RCC_CCIPR_USART1SEL_MASK << RCC_CCIPR_USART1SEL_SHIFT);
|
||||
RCC_CCIPR |= (usart1_sel << RCC_CCIPR_USART1SEL_SHIFT);
|
||||
}
|
||||
|
||||
/*---------------------------------------------------------------------------*/
|
||||
/** @brief Set the USART2 clock source
|
||||
*
|
||||
@ -446,6 +447,55 @@ void rcc_set_usart2_sel(uint32_t usart2_sel)
|
||||
RCC_CCIPR |= (usart2_sel << RCC_CCIPR_USART2SEL_SHIFT);
|
||||
}
|
||||
|
||||
/*---------------------------------------------------------------------------*/
|
||||
/** @brief Set the peripheral clock source
|
||||
*
|
||||
* @param sel periphral clock source
|
||||
*/
|
||||
void rcc_set_peripheral_clk_sel(uint32_t periph, uint32_t sel)
|
||||
{
|
||||
uint8_t shift;
|
||||
uint32_t mask;
|
||||
|
||||
switch (periph) {
|
||||
case LPTIM1_BASE:
|
||||
shift = RCC_CCIPR_LPTIM1SEL_SHIFT;
|
||||
mask = RCC_CCIPR_LPTIM1SEL_MASK;
|
||||
break;
|
||||
|
||||
case I2C3_BASE:
|
||||
shift = RCC_CCIPR_I2C3SEL_SHIFT;
|
||||
mask = RCC_CCIPR_I2C3SEL_MASK;
|
||||
break;
|
||||
|
||||
case I2C1_BASE:
|
||||
shift = RCC_CCIPR_I2C1SEL_SHIFT;
|
||||
mask = RCC_CCIPR_I2C1SEL_MASK;
|
||||
break;
|
||||
|
||||
case LPUART1_BASE:
|
||||
shift = RCC_CCIPR_LPUART1SEL_SHIFT;
|
||||
mask = RCC_CCIPR_LPUART1SEL_MASK;
|
||||
break;
|
||||
|
||||
case USART2_BASE:
|
||||
shift = RCC_CCIPR_USART2SEL_SHIFT;
|
||||
mask = RCC_CCIPR_USART2SEL_MASK;
|
||||
break;
|
||||
|
||||
case USART1_BASE:
|
||||
shift = RCC_CCIPR_USART1SEL_SHIFT;
|
||||
mask = RCC_CCIPR_USART1SEL_MASK;
|
||||
break;
|
||||
|
||||
default:
|
||||
return;
|
||||
}
|
||||
|
||||
uint32_t reg32 = RCC_CCIPR & ~(mask << shift);
|
||||
RCC_CCIPR = reg32 | (sel << shift);
|
||||
}
|
||||
|
||||
/**
|
||||
* Set up sysclock with PLL from HSI16
|
||||
* @param clock full struct with desired parameters
|
||||
|
Loading…
x
Reference in New Issue
Block a user