/**
|
******************************************************************************
|
* @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.
|
*
|
* <h2><center>© COPYRIGHT 2019 Chipways</center></h2>
|
******************************************************************************
|
*/
|
#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<<ICS_C1_CLKS_SHIFT);
|
|
ICS->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<<ICS_C1_RDIV_SHIFT);
|
|
ICS->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<<ICS_C4_RDIV2_SHIFT);
|
|
ICS->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<<ICS_C1_IREFS_SHIFT);
|
|
ICS->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 */
|