/**
******************************************************************************
* @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 */