MCPcopy Create free account
hub / github.com/RT-Thread/rt-thread / CMU_ClockFreqGet

Function CMU_ClockFreqGet

bsp/efm32/Libraries/emlib/src/em_cmu.c:1000–1146  ·  view source on GitHub ↗

/ * @brief * Get clock frequency for a clock point. * * @param[in] clock * Clock point to fetch frequency for. * * @return * The current frequency in Hz. ******************************************************************************/

Source from the content-addressed store, hash-verified

998 * The current frequency in Hz.
999 ******************************************************************************/
1000uint32_t CMU_ClockFreqGet(CMU_Clock_TypeDef clock)
1001{
1002 uint32_t ret;
1003
1004 switch(clock & (CMU_CLK_BRANCH_MASK << CMU_CLK_BRANCH_POS))
1005 {
1006 case (CMU_HF_CLK_BRANCH << CMU_CLK_BRANCH_POS):
1007 {
1008 ret = SystemHFClockGet();
1009#if defined(_EFM32_GIANT_FAMILY)
1010 /* Giant Gecko has an additional divider, not used by USBC */
1011 ret = ret / (1 + ((CMU->CTRL & _CMU_CTRL_HFCLKDIV_MASK) >>
1012 _CMU_CTRL_HFCLKDIV_SHIFT));
1013#endif
1014 } break;
1015
1016#if defined(_CMU_HFPERCLKEN0_USART0_MASK) || \
1017 defined(_CMU_HFPERCLKEN0_USART1_MASK) || \
1018 defined(_CMU_HFPERCLKEN0_USART2_MASK) || \
1019 defined(_CMU_HFPERCLKEN0_UART0_MASK) || \
1020 defined(_CMU_HFPERCLKEN0_UART1_MASK) || \
1021 defined(_CMU_HFPERCLKEN0_TIMER0_MASK) || \
1022 defined(_CMU_HFPERCLKEN0_TIMER1_MASK) || \
1023 defined(_CMU_HFPERCLKEN0_TIMER2_MASK) || \
1024 defined(_CMU_HFPERCLKEN0_TIMER3_MASK) || \
1025 defined(_CMU_HFPERCLKEN0_ACMP0_MASK) || \
1026 defined(_CMU_HFPERCLKEN0_ACMP1_MASK) || \
1027 defined(_CMU_HFPERCLKEN0_DAC0_MASK) || \
1028 defined(_CMU_HFPERCLKEN0_ADC0_MASK) || \
1029 defined(_CMU_HFPERCLKEN0_I2C0_MASK) || \
1030 defined(_CMU_HFPERCLKEN0_I2C1_MASK) || \
1031 defined(PRS_PRESENT) || \
1032 defined(VCMP_PRESENT)|| \
1033 defined(GPIO_PRESENT)
1034 case (CMU_HFPER_CLK_BRANCH << CMU_CLK_BRANCH_POS):
1035 {
1036 ret = SystemHFClockGet();
1037#if defined (_EFM32_GIANT_FAMILY)
1038 /* Leopard/Giant Gecko has an additional divider */
1039 ret = ret / (1 + ((CMU->CTRL & _CMU_CTRL_HFCLKDIV_MASK) >>
1040 _CMU_CTRL_HFCLKDIV_SHIFT));
1041#endif
1042 ret >>= (CMU->HFPERCLKDIV & _CMU_HFPERCLKDIV_HFPERCLKDIV_MASK) >>
1043 _CMU_HFPERCLKDIV_HFPERCLKDIV_SHIFT;
1044 } break;
1045#endif
1046
1047#if defined(AES_PRESENT) || \
1048 defined(DMA_PRESENT) || \
1049 defined(EBI_PRESENT) || \
1050 defined(USB_PRESENT)
1051 case (CMU_HFCORE_CLK_BRANCH << CMU_CLK_BRANCH_POS):
1052 {
1053 ret = SystemCoreClockGet();
1054 } break;
1055#endif
1056
1057 case (CMU_LFA_CLK_BRANCH << CMU_CLK_BRANCH_POS):

Callers 13

efm32_acmp_WarmTimeCalcFunction · 0.85
LEUART_BaudrateGetFunction · 0.85
LEUART_BaudrateSetFunction · 0.85
MSC_InitFunction · 0.85
ADC_PrescaleCalcFunction · 0.85
ADC_TimebaseCalcFunction · 0.85
DAC_PrescaleCalcFunction · 0.85
USART_BaudrateAsyncSetFunction · 0.85
USART_BaudrateGetFunction · 0.85
USART_BaudrateSyncSetFunction · 0.85
I2C_BusFreqGetFunction · 0.85
I2C_BusFreqSetFunction · 0.85

Calls 6

CMU_LFClkGetFunction · 0.85
CMU_DBGClkGetFunction · 0.85
CMU_AUXClkGetFunction · 0.85
CMU_USBCClkGetFunction · 0.85
SystemHFClockGetFunction · 0.50
SystemCoreClockGetFunction · 0.50

Tested by

no test coverage detected