/ * @brief * Get clock frequency for a clock point. * * @param[in] clock * Clock point to fetch frequency for. * * @return * The current frequency in Hz. ******************************************************************************/
| 998 | * The current frequency in Hz. |
| 999 | ******************************************************************************/ |
| 1000 | uint32_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): |
no test coverage detected