/** ****************************************************************************** * @file xl_ics.c * @author xu.wang * @version 4.5.2 * @date Fri Mar 26 17:29:12 2021 * @brief This file provide function about ICS firmware program ****************************************************************************** * @attention * * 2019 by Chipways Communications,Inc. All Rights Reserved. * This software is supplied under the terms of a license * agreement or non-disclosure agreement with Chipways. * Passing on and copying of this document,and communication * of its contents is not permitted without prior written * authorization. * *

© COPYRIGHT 2019 Chipways

****************************************************************************** */ #if defined(__cplusplus) extern "C" { #endif /* __cplusplus */ /* Includes ---------------------------------------------------------------*/ #include "xl_ics.h" /** @addtogroup XL6600_StdPeriph_Driver * @{ */ /** @defgroup ICS ISC Module * @brief ICS Driver Modules Library * @{ */ /* Private typedef -----------------------------------------------------------*/ /* Private define ------------------------------------------------------------*/ /* Private macro -------------------------------------------------------------*/ /* Private variables ---------------------------------------------------------*/ /* Private function prototypes -----------------------------------------------*/ /* Private functions ---------------------------------------------------------*/ /** @defgroup ICS_Private_Functions * @{ */ /** * @brief ½«ICSÍâÉè¼Ä´æÆ÷»Ö¸´Ä¬ÈÏÖµ * @param ICSx: Ö¸ÏòICSÍâÉè * @retval None */ void ICS_DeInit(void) { /* Deinitializes to default reset values */ ICS->C1 = 0x04; ICS->C2 = 0x02; ICS->C3 = 0x00; ICS->C4 = 0x00; } /** * @brief ʱÖÓÔ´Ñ¡Ôñ * @param Clksel: ʱÖÓÔ´Ñ¡Ôñ * Õâ¸ö²ÎÊý¿ÉÒÔÈ¡ÏÂÃæµÄÖµ: * @arg ICS_CLOCKS_FLL£ºÊ±ÖÓԴΪFLLÊä³ö * @arg ICS_CLOCKS_IRC£ºÊ±ÖÓԴΪÄÚ²¿Ê±ÖÓ(IRC) * @arg ICS_CLOCKS_OSC£ºÊ±ÖÓԴΪÍⲿʱÖÓ(OSC) * @arg ICS_CLOCKS_RESERVED£º±£Áô * @retval None */ void ICS_ClocksSelect(uint8_t Clksel) { uint8_t temp; temp = ICS->C1; temp &= ~ICS_C1_CLKS_MASK; temp |= (uint8_t)(Clksel<C1 = temp; } /** * @brief ʱÖÓ»ù×¼·ÖƵ * @param BDiv: ·ÖƵϵÊý * Õâ¸ö²ÎÊý¿ÉÒÔÈ¡ÏÂÃæµÄÖµ: * @arg ICS_RDIV_1or32 £º(OSC_CR[RANGE]=0)ƵÂÊ·¶Î§Îª32kHzµÍƵ·¶Î§£º·ÖƵϵÊýΪ1 £»ÆµÂÊ·¶Î§Îª4-24MHzµÍƵ·¶Î§£º·ÖƵϵÊýΪ32£» * @arg ICS_RDIV_2or64 £º(OSC_CR[RANGE]=0)ƵÂÊ·¶Î§Îª32kHzµÍƵ·¶Î§£º·ÖƵϵÊýΪ2 £»ÆµÂÊ·¶Î§Îª4-24MHzµÍƵ·¶Î§£º·ÖƵϵÊýΪ64£» * @arg ICS_RDIV_4or128 £º(OSC_CR[RANGE]=0)ƵÂÊ·¶Î§Îª32kHzµÍƵ·¶Î§£º·ÖƵϵÊýΪ4 £»ÆµÂÊ·¶Î§Îª4-24MHzµÍƵ·¶Î§£º·ÖƵϵÊýΪ128£» * @arg ICS_RDIV_8or256 £º(OSC_CR[RANGE]=0)ƵÂÊ·¶Î§Îª32kHzµÍƵ·¶Î§£º·ÖƵϵÊýΪ8 £»ÆµÂÊ·¶Î§Îª4-24MHzµÍƵ·¶Î§£º·ÖƵϵÊýΪ256£» * @arg ICS_RDIV_16or512 £º(OSC_CR[RANGE]=0)ƵÂÊ·¶Î§Îª32kHzµÍƵ·¶Î§£º·ÖƵϵÊýΪ16 £»ÆµÂÊ·¶Î§Îª4-24MHzµÍƵ·¶Î§£º·ÖƵϵÊýΪ512£» * @arg ICS_RDIV_32or1024£º(OSC_CR[RANGE]=0)ƵÂÊ·¶Î§Îª32kHzµÍƵ·¶Î§£º·ÖƵϵÊýΪ32 £»ÆµÂÊ·¶Î§Îª4-24MHzµÍƵ·¶Î§£º·ÖƵϵÊýΪ1024£» * @arg ICS_RDIV_64 £º(OSC_CR[RANGE]=0)ƵÂÊ·¶Î§Îª32kHzµÍƵ·¶Î§£º·ÖƵϵÊýΪ64 £»ÆµÂÊ·¶Î§Îª4-24MHzµÍƵ·¶Î§£º·ÖƵϵÊýΪ±£Áô£» * @arg ICS_RDIV_128 £º(OSC_CR[RANGE]=0)ƵÂÊ·¶Î§Îª32kHzµÍƵ·¶Î§£º·ÖƵϵÊýΪ128£»ÆµÂÊ·¶Î§Îª4-24MHzµÍƵ·¶Î§£º·ÖƵϵÊýΪ±£Áô£» * @retval None */ void ICS_BaseDivider(uint8_t RDiv) { uint8_t temp; temp = ICS->C1; temp &= ~ICS_C1_RDIV_MASK; temp |= (uint8_t)(RDiv<C1 = temp; } /** * @brief ʱÖÓ»ù×¼·ÖƵ2 * @param BDiv: ·ÖƵϵÊý * Õâ¸ö²ÎÊý¿ÉÒÔÈ¡ÏÂÃæµÄÖµ: * @arg ICS_RDIV2_1 £º1·ÖƵ * @arg ICS_RDIV2_2 £º2·ÖƵ * @arg ICS_RDIV2_3 £º3·ÖƵ * @arg ICS_RDIV2_4 £º4·ÖƵ * @arg ICS_RDIV2_5 £º5·ÖƵ * @arg ICS_RDIV2_6 £º6·ÖƵ * @arg ICS_RDIV2_7 £º7·ÖƵ * @arg ICS_RDIV2_8 £º8·ÖƵ * @retval None */ void ICS_BaseDivider2(uint8_t RDiv2) { uint8_t temp; temp = ICS->C4; temp &= ~ICS_C4_RDIV2_MASK; temp |= (uint8_t)(RDiv2<C4 = temp; } /** * @brief ʱÖÓ»ù×¼·ÖƵ * @param None * @retval ·ÖƵֵ * Õâ¸ö²ÎÊý¿ÉÒÔÈ¡ÏÂÃæµÄÖµ: * @arg ICS_RDIV_1or32 £º(OSC_CR[RANGE]=0)ƵÂÊ·¶Î§Îª32kHzµÍƵ·¶Î§£º·ÖƵϵÊýΪ1 £»ÆµÂÊ·¶Î§Îª4-24MHzµÍƵ·¶Î§£º·ÖƵϵÊýΪ32£» * @arg ICS_RDIV_2or64 £º(OSC_CR[RANGE]=0)ƵÂÊ·¶Î§Îª32kHzµÍƵ·¶Î§£º·ÖƵϵÊýΪ2 £»ÆµÂÊ·¶Î§Îª4-24MHzµÍƵ·¶Î§£º·ÖƵϵÊýΪ64£» * @arg ICS_RDIV_4or128 £º(OSC_CR[RANGE]=0)ƵÂÊ·¶Î§Îª32kHzµÍƵ·¶Î§£º·ÖƵϵÊýΪ4 £»ÆµÂÊ·¶Î§Îª4-24MHzµÍƵ·¶Î§£º·ÖƵϵÊýΪ128£» * @arg ICS_RDIV_8or256 £º(OSC_CR[RANGE]=0)ƵÂÊ·¶Î§Îª32kHzµÍƵ·¶Î§£º·ÖƵϵÊýΪ8 £»ÆµÂÊ·¶Î§Îª4-24MHzµÍƵ·¶Î§£º·ÖƵϵÊýΪ256£» * @arg ICS_RDIV_16or512 £º(OSC_CR[RANGE]=0)ƵÂÊ·¶Î§Îª32kHzµÍƵ·¶Î§£º·ÖƵϵÊýΪ16 £»ÆµÂÊ·¶Î§Îª4-24MHzµÍƵ·¶Î§£º·ÖƵϵÊýΪ512£» * @arg ICS_RDIV_32or1024£º(OSC_CR[RANGE]=0)ƵÂÊ·¶Î§Îª32kHzµÍƵ·¶Î§£º·ÖƵϵÊýΪ32 £»ÆµÂÊ·¶Î§Îª4-24MHzµÍƵ·¶Î§£º·ÖƵϵÊýΪ1024£» * @arg ICS_RDIV_64 £º(OSC_CR[RANGE]=0)ƵÂÊ·¶Î§Îª32kHzµÍƵ·¶Î§£º·ÖƵϵÊýΪ64 £»ÆµÂÊ·¶Î§Îª4-24MHzµÍƵ·¶Î§£º·ÖƵϵÊýΪ±£Áô£» * @arg ICS_RDIV_128 £º(OSC_CR[RANGE]=0)ƵÂÊ·¶Î§Îª32kHzµÍƵ·¶Î§£º·ÖƵϵÊýΪ128£»ÆµÂÊ·¶Î§Îª4-24MHzµÍƵ·¶Î§£º·ÖƵϵÊýΪ±£Áô£» */ uint8_t ICS_GetBaseDivider(void) { uint8_t temp; temp = ICS->C1; temp &= ICS_C1_RDIV_MASK; temp >>= ICS_C1_RDIV_SHIFT; return temp; } /** * @brief »ñÈ¡OSCµÄ»ù×¼·ÖƵÆ÷2µÄ·ÖƵֵ * @param None * @retval ·ÖƵֵ * Õâ¸ö²ÎÊý¿ÉÒÔÈ¡ÏÂÃæµÄÖµ: * @arg ICS_RDIV_1or32 £º(OSC_CR[RANGE]=0)ƵÂÊ·¶Î§Îª32kHzµÍƵ·¶Î§£º·ÖƵϵÊýΪ1 £»ÆµÂÊ·¶Î§Îª4-24MHzµÍƵ·¶Î§£º·ÖƵϵÊýΪ32£» * @arg ICS_RDIV_2or64 £º(OSC_CR[RANGE]=0)ƵÂÊ·¶Î§Îª32kHzµÍƵ·¶Î§£º·ÖƵϵÊýΪ2 £»ÆµÂÊ·¶Î§Îª4-24MHzµÍƵ·¶Î§£º·ÖƵϵÊýΪ64£» * @arg ICS_RDIV_4or128 £º(OSC_CR[RANGE]=0)ƵÂÊ·¶Î§Îª32kHzµÍƵ·¶Î§£º·ÖƵϵÊýΪ4 £»ÆµÂÊ·¶Î§Îª4-24MHzµÍƵ·¶Î§£º·ÖƵϵÊýΪ128£» * @arg ICS_RDIV_8or256 £º(OSC_CR[RANGE]=0)ƵÂÊ·¶Î§Îª32kHzµÍƵ·¶Î§£º·ÖƵϵÊýΪ8 £»ÆµÂÊ·¶Î§Îª4-24MHzµÍƵ·¶Î§£º·ÖƵϵÊýΪ256£» * @arg ICS_RDIV_16or512 £º(OSC_CR[RANGE]=0)ƵÂÊ·¶Î§Îª32kHzµÍƵ·¶Î§£º·ÖƵϵÊýΪ16 £»ÆµÂÊ·¶Î§Îª4-24MHzµÍƵ·¶Î§£º·ÖƵϵÊýΪ512£» * @arg ICS_RDIV_32or1024£º(OSC_CR[RANGE]=0)ƵÂÊ·¶Î§Îª32kHzµÍƵ·¶Î§£º·ÖƵϵÊýΪ32 £»ÆµÂÊ·¶Î§Îª4-24MHzµÍƵ·¶Î§£º·ÖƵϵÊýΪ1024£» * @arg ICS_RDIV_64 £º(OSC_CR[RANGE]=0)ƵÂÊ·¶Î§Îª32kHzµÍƵ·¶Î§£º·ÖƵϵÊýΪ64 £»ÆµÂÊ·¶Î§Îª4-24MHzµÍƵ·¶Î§£º·ÖƵϵÊýΪ±£Áô£» * @arg ICS_RDIV_128 £º(OSC_CR[RANGE]=0)ƵÂÊ·¶Î§Îª32kHzµÍƵ·¶Î§£º·ÖƵϵÊýΪ128£»ÆµÂÊ·¶Î§Îª4-24MHzµÍƵ·¶Î§£º·ÖƵϵÊýΪ±£Áô£» */ uint8_t ICS_GetBaseDivider2(void) { uint8_t temp; temp = ICS->C4; temp &= ICS_C4_RDIV2_MASK; temp >>= ICS_C4_RDIV2_SHIFT; return temp + 1u; } /** * @brief FLLʱÖÓ»ù׼ѡÔñ * @param FllSel: FLLÑ¡ÔñµÄ»ù׼ʱÖÓÔ´ * Õâ¸ö²ÎÊý¿ÉÒÔÈ¡ÏÂÃæµÄÖµ: * @arg ICS_IREFS_OSC £ºÍⲿOSCʱÖÓÔ´ * @arg ICS_IREFS_IRC £ºÄÚ²¿IRCʱÖÓÔ´ * @retval None */ void ICS_IREFSSelect(uint8_t FllSel) { uint8_t temp; temp = ICS->C1; temp &= ~ICS_C1_IREFS_MASK; temp |= (uint8_t)(FllSel<C1 = temp; } /** * @brief ÄÚ²¿»ù׼ʱÖÓ(IRC)ʹÄÜ * @param State: ʹÄÜ״̬ * Õâ¸ö²ÎÊý¿ÉÒÔÈ¡ÏÂÃæµÄÖµ: * @arg ENABLE £ºÄÚ²¿»ù׼ʱÖÓ(IRC)ÓÐЧ * @arg DISABLE £ºÄÚ²¿»ù׼ʱÖÓ(IRC)ÎÞЧ * @retval None */ void ICS_IRCEnableCmd(FunctionalState State) { if(State !=DISABLE) { /* */ ICS->C1 |= ICS_C1_IRCLKEN_MASK; } else { /* */ ICS->C1 &= ~ICS_C1_IRCLKEN_MASK; } } /** * @brief ÄÚ²¿»ù׼ʱÖÓֹͣʹÄÜ£¬¿ØÖÆÄÚ²¿Ê±ÖÓÔÚICS½øÈëStopģʽʱÊÇ·ñ±£³ÖʹÄÜ * @param ICSx: Ö¸ÏòICSÍâÉè * @param State: ʹÄÜ״̬ * Õâ¸ö²ÎÊý¿ÉÒÔÈ¡ÏÂÃæµÄÖµ: * @arg ENABLE £ºÄÚ²¿»ù׼ʱÖÓÔÚstopģʽϽûÓà * @arg DISABLE £ºÄÚ²¿»ù׼ʱÖÓÔÚstopģʽϲ»½ûÓà * @retval None */ void ICS_IREFStopEnableCmd(FunctionalState State) { if(State !=DISABLE) { /* */ ICS->C1 &= ~ICS_C1_IREFSTEN_MASK; } else { /* */ ICS->C1 |= ICS_C1_IREFSTEN_MASK; } } /** * @brief ×ÜÏßʱÖÓ·ÖÆµ * @param BDiv: ·ÖƵϵÊý(1-128) * @retval None */ void ICS_BusDivder(uint8_t BDiv) { uint8_t temp; temp = ICS->C2; temp &= ~ICS_C2_BDIV_MASK; temp |= (uint8_t)((BDiv-1u) << ICS_C2_BDIV_SHIFT); ICS->C2 = temp; } /** * @brief µÃµ½ICS_OUTCLKµÄ·ÖƵֵ * @param None * @retval ·ÖƵֵ */ uint8_t ICS_GetBusDivder(void) { return (uint8_t)(ICS->C2 >> 1); } /** * @brief FLLÔڵ͹¦ºÄÊǽûÓÃÑ¡Ôñ * @param State: ʹÄÜ״̬ * Õâ¸ö²ÎÊý¿ÉÒÔÈ¡ÏÂÃæµÄÖµ: * @arg ENABLE £ºµÍ¹¦ºÄģʽϽûÓà * @arg DISABLE £ºµÍ¹¦ºÄģʽϲ»½ûÓà * @retval None */ void ICS_FllLPModeStopEnableCmd(FunctionalState State) { if(State !=DISABLE) { /* */ ICS->C2 |= ICS_C2_LP_MASK; } else { /* */ ICS->C2 &= ~ICS_C2_LP_MASK; } } /** * @brief Ê§ËøÖжÏʹÄÜ£¬¸Ã¹¦ÄÜÔÚFLLÒÑÊ§ËøÓÐЧ * @param State: ʹÄÜ״̬ * Õâ¸ö²ÎÊý¿ÉÒÔÈ¡ÏÂÃæµÄÖµ: * @arg ENABLE £ºÊ¹ÄÜÊ§ËøÖÐ¶Ï * @arg DISABLE £º²»Ê¹ÄÜÊ§ËøÖÐ¶Ï * @retval None */ void ICS_LosingLockIntEnableCmd(FunctionalState State) { if(State !=DISABLE) { /* */ ICS->C4 |= ICS_C4_LOLIE_MASK; } else { /* */ ICS->C4 &= ~ICS_C4_LOLIE_MASK; } } /** * @brief Ê§ËøÖжÏʹÄÜ£¬¸Ã¹¦ÄÜÔÚFLLÒÑÊ§ËøÓÐЧ * @param State: ʹÄÜ״̬ * Õâ¸ö²ÎÊý¿ÉÒÔÈ¡ÏÂÃæµÄÖµ: * @arg ENABLE £ºFLLÔÚstopģʽÏÂÇ¿ÖÆ¹Ø¶Ï£¬¼´LPΪ0 * @arg DISABLE £ºFLLÔÚstopģʽϸù¾ÝLP±ê־ѡÔñ¹Ø¶Ï * @retval None */ void ICS_FllStopModeCloseEnableCmd(FunctionalState State) { if(State !=DISABLE) { /* */ ICS->C4 &= ~ICS_C4_FLLSTEN_MASK; } else { /* */ ICS->C4 |= ICS_C4_FLLSTEN_MASK; } } /** * @brief ʱÖÓ¼à¿ØÊ¹ÄÜ * @param State: ʹÄÜ״̬ * Õâ¸ö²ÎÊý¿ÉÒÔÈ¡ÏÂÃæµÄÖµ: * @arg ENABLE £º¶ªÊ§ÍⲿʱÖÓʱ²úÉúÒ»¸ö¸´Î»ÇëÇó * @arg DISABLE £º½ûÓÃʱÖÓ¼à¿Ø * @retval None */ void ICS_ClockMonitorEnableCmd(FunctionalState State) { if(State !=DISABLE) { /* */ ICS->C4 |= ICS_C4_CME_MASK; } else { /* */ ICS->C4 &= ~ICS_C4_CME_MASK; } } /** * @brief IRCʱÖÓÑ¡Ôñ * @param IRCValue: IRCʱÖÓ * Õâ¸ö²ÎÊý¿ÉÒÔÈ¡ÏÂÃæµÄÖµ: * @arg ICS_IRC_50K £ºIRCΪ54kHz * @arg ICS_IRC_37o5K £ºIRCΪ37.5kHz * @retval None */ void ICS_IRCSelect(uint8_t IRCValue) { uint32_t temp; temp = ICS->CFG; temp &= ~ICS_CFG_IRCSEL_MASK; temp |= (uint32_t)(0x55690000u | (uint32_t)((uint32_t)IRCValue << (uint32_t)ICS_CFG_IRCSEL_SHIFT)); ICS->CFG = temp; } /** * @brief FLL±¶ÆµÑ¡Ôñ * @param FactorValue: ±¶ÆµÏµÊý * Õâ¸ö²ÎÊý¿ÉÒÔÈ¡ÏÂÃæµÄÖµ: * @arg ICS_FLLFACTOR_1280 £º1280±¶Æµ * @arg ICS_FLLFACTOR_1920 £º1920±¶Æµ * @retval None */ void ICS_FllFactorSelect(uint8_t FactorValue) { uint32_t temp; temp = ICS->CFG; temp &= ~ICS_CFG_FLLFSEL_MASK; temp |= (uint32_t)(0x55690000u | (uint32_t)FactorValue); ICS->CFG = temp; } /** * @brief »ñÈ¡ICS״̬ * @param Status: ½«Òª»ñÈ¡µÄ״̬±êÖ¾ * Õâ¸ö²ÎÊý¿ÉÒÔÈ¡ÏÂÃæµÄÖµ: * @arg ICS_STATUS_LOSINGLOCK £ºÊ§Ëø×´Ì¬£¬Ö¸¶¨FLLËø¶¨×´Ì¬ * @arg ICS_STATUS_LOCK £ºËø¶¨×´Ì¬£¬Ö¸Ê¾FLLÊÇ·ñÒѾ­»ñÈ¡Ëø¶¨ * @arg ICS_STATUS_IREF £ºÄÚ²¿»ù׼״̬£¬Îª0£º»ù׼ʱÖÓÀ´Ô´ÓÚÍⲿʱÖÓ£¬Îª1£º»ù׼ʱÖÓÀ´Ô´ÓÚÄÚ²¿Ê±ÖÓ * @retval ·µ»Ø¶ÔÓ¦ICS״̬µÄ±êÖ¾ * Õâ¸ö²ÎÊý¿ÉÒÔÈ¡ÏÂÃæµÄÖµ: * @arg 1 £º×´Ì¬ÖÃ1 * @arg 0 £º×´Ì¬ÖÃ0 */ uint8_t ICS_GetStatus(uint8_t ICSStatus) { uint8_t sta; if(ICSStatus == (ICSStatus & ICS->S)) { sta = 1; } else { sta = 0; } return sta; } /** * @brief »ñȡʱÖÓģʽ * @param Status: ½«Òª»ñÈ¡µÄ״̬±êÖ¾ * @retval ·µ»Ø¶ÔÓ¦ICS״̬µÄ±êÖ¾ * Õâ¸ö²ÎÊý¿ÉÒÔÈ¡ÏÂÃæµÄÖµ: * @arg ICS_MODE_FLL £ºÊ±ÖÓģʽΪFLLÊä³ö * @arg ICS_MODE_IRC £ºÊ±ÖÓģʽΪÄÚ²¿»ù׼ʱÖÓ(IRC) * @arg ICS_MODE_OSC £ºÊ±ÖÓģʽΪÍⲿ»ù׼ʱÖÓ(OSC) * @arg ICS_MODE_RESERVED £º±£Áô */ uint8_t ICS_GetClockMode(void) { uint8_t temp; uint8_t clkmode; temp = ICS->S & ICS_S_CLKST_MASK; temp >>= ICS_S_CLKST_SHIFT; if(temp == ICS_MODE_FLL) { clkmode = ICS_MODE_FLL; } else if(temp == ICS_MODE_IRC) { clkmode = ICS_MODE_IRC; } else if(temp == ICS_MODE_OSC) { clkmode = ICS_MODE_OSC; } else { clkmode = ICS_MODE_RESERVED; } return clkmode; } /** * @brief »ñÈ¡IREFʱÖÓÔ´ * @param None * @retval IREFµÄʱÖÓÔ´±êÖ¾ * Õâ¸ö²ÎÊý¿ÉÒÔÈ¡ÏÂÃæµÄÖµ: * @arg ICS_IREFS_OSC £ºÍⲿOSCʱÖÓÔ´ * @arg ICS_IREFS_IRC £ºÄÚ²¿IRCʱÖÓÔ´ */ uint8_t ICS_GetIREFSSelect(void) { uint8_t temp; if((ICS->C1 & (uint8_t)0x04) == (uint8_t)0x04) { temp = ICS_IREFS_IRC; } else { temp = ICS_IREFS_OSC; } return temp; } /** * @brief »ñÈ¡µ±Ç°IRCʱÖÓÆµÂÊ * @retval ·µ»Ø¶ÔÓ¦ICS״̬µÄ±êÖ¾ * Õâ¸ö²ÎÊý¿ÉÒÔÈ¡ÏÂÃæµÄÖµ: * @arg ICS_IRC_50K £ºIRCƵÂÊΪ100k * @arg ICS_IRC_37o5K £ºIRCƵÂÊΪ150k */ uint8_t ICS_GetIRCFre(void) { uint8_t temp; if((ICS->CFG & (uint32_t)0x2) == (uint32_t)0x2) { temp = ICS_IRC_37o5K; } else { temp = ICS_IRC_50K; } return temp; } /** * @brief »ñÈ¡µ±Ç°FLL±¶ÆµÆ÷µÄ±¶Êý * @retval ·µ»Ø¶ÔÓ¦FLL±¶ÆµÆ÷ϵÊýµÄ±êÖ¾ * Õâ¸ö²ÎÊý¿ÉÒÔÈ¡ÏÂÃæµÄÖµ: * @arg ICS_FLLFACTOR_1280 £ºFLL±¶ÆµÏµÊýÊÇ1280±¶ * @arg ICS_FLLFACTOR_1920 £ºFLL±¶ÆµÏµÊýÊÇ1920±¶ */ uint8_t ICS_GetFLLMultiple(void) { uint8_t temp; if((ICS->CFG & (uint32_t)0x1) == (uint32_t)0x1) { temp = ICS_FLLFACTOR_1920; } else { temp = ICS_FLLFACTOR_1280; } return temp; } /** * @} */ /** * @} */ /** * @} */ #ifdef __cplusplus } #endif /* __cplusplus */