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

Function CMU_ClockSelectGet

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

/ * @brief * Get currently selected reference clock used for a clock branch. * * @param[in] clock * Clock branch to fetch selected ref. clock for. One of: * @li #cmuClock_HF * @li #cmuClock_LFA * @li #cmuClock_LFB * @li #cmuClock_USBC * @li #cmuClock_DBG * * @return * Reference clock used for clocking selected branch, #cmuSelect_Error if * invalid @p clock provided.

Source from the content-addressed store, hash-verified

1163 * invalid @p clock provided.
1164 *****************************************************************************/
1165CMU_Select_TypeDef CMU_ClockSelectGet(CMU_Clock_TypeDef clock)
1166{
1167 CMU_Select_TypeDef ret = cmuSelect_Disabled;
1168 uint32_t selReg;
1169
1170 selReg = (clock >> CMU_SEL_REG_POS) & CMU_SEL_REG_MASK;
1171
1172 switch (selReg)
1173 {
1174 case CMU_HFCLKSEL_REG:
1175 switch (CMU->STATUS & (CMU_STATUS_HFRCOSEL | CMU_STATUS_HFXOSEL |
1176 CMU_STATUS_LFRCOSEL | CMU_STATUS_LFXOSEL))
1177 {
1178 case CMU_STATUS_LFXOSEL:
1179 ret = cmuSelect_LFXO;
1180 break;
1181
1182 case CMU_STATUS_LFRCOSEL:
1183 ret = cmuSelect_LFRCO;
1184 break;
1185
1186 case CMU_STATUS_HFXOSEL:
1187 ret = cmuSelect_HFXO;
1188 break;
1189
1190 default:
1191 ret = cmuSelect_HFRCO;
1192 break;
1193 }
1194 break;
1195
1196 case CMU_LFACLKSEL_REG:
1197 switch (CMU->LFCLKSEL & _CMU_LFCLKSEL_LFA_MASK)
1198 {
1199 case _CMU_LFCLKSEL_LFA_LFRCO:
1200 ret = cmuSelect_LFRCO;
1201 break;
1202
1203 case _CMU_LFCLKSEL_LFA_LFXO:
1204 ret = cmuSelect_LFXO;
1205 break;
1206
1207 case _CMU_LFCLKSEL_LFA_HFCORECLKLEDIV2:
1208 ret = cmuSelect_CORELEDIV2;
1209 break;
1210
1211 default:
1212#if defined(_EFM32_TINY_FAMILY) || defined(_EFM32_GIANT_FAMILY)
1213 if (CMU->LFCLKSEL & _CMU_LFCLKSEL_LFAE_MASK)
1214 {
1215 ret = cmuSelect_ULFRCO;
1216 break;
1217 }
1218#else
1219 ret = cmuSelect_Disabled;
1220#endif
1221 break;
1222 }

Callers 3

CMU_USBCClkGetFunction · 0.85
CMU_DBGClkGetFunction · 0.85
CMU_HFRCOBandSetFunction · 0.85

Calls

no outgoing calls

Tested by

no test coverage detected