/ * @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.
| 1163 | * invalid @p clock provided. |
| 1164 | *****************************************************************************/ |
| 1165 | CMU_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 | } |
no outgoing calls
no test coverage detected