123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960616263646566676869707172737475767778798081828384858687888990919293949596979899100101102103104105106107108109110111112113114115116117118119120121122123124125126127128129130131132133134135136137138139140141142143144145146147148149150151152153154155156157158159160161162163164165166167168169170171172173174175176177178179180181182183184185186187188189190191192193194195196197198199200201202203204205206207208209210211212213214215216217218219220221222223224225226227228229230231232233234235236237238239240241242243244245246247248249250251252253254255256257258259260261262263264265266267268269270271272273274275276277278279280281282283284285286287288289290291292293294295296297298299300301302303304305306307308309310311312313314315316317318319320321322323324325326327328329330331332333334335336337338339340341342343344345346347348349350351352353354355356357358359360361362363364365366367368369370371372373374375376377378379380381382383384385386387388389390391392393394395396397398399400401402403404405406407408409410411412413414415416417418419420421422423424425426427428429430431432433434435436437438439440441442443444445446447448449450451452453454455456457458459460461462463464465466467468469470471472473474475476477478479480481482483484485486487488489490491492493494495496497498499500501502503504505506507508509510511512513514515516517518519520521522523524525526527528529530531532533534535536537538539540541542543544545546547548549550551552553554555556557558559560561562563564565566567568569570571572573574575576577578579580581582583584585586587588589590591592593594595 |
- /********************************** (C) COPYRIGHT *******************************
- * File Name : CH57x_clk.c
- * Author : WCH
- * Version : V1.0
- * Date : 2018/12/15
- * Description
- *******************************************************************************/
- #include "CH57x_common.h"
- /*******************************************************************************
- * Function Name : SystemInit
- * Description : 系统时钟默认初始化
- * Input : None
- * Return : None
- *******************************************************************************/
- void SystemInit(void)
- {
- R8_SAFE_ACCESS_SIG = SAFE_ACCESS_SIG1;
- R8_SAFE_ACCESS_SIG = SAFE_ACCESS_SIG2;
- R16_CLK_SYS_CFG = (2<<6)|0x08; // 32M -> Fsys
- *((PUINT16V)0x40001048) |= 4;
- R8_SAFE_ACCESS_SIG = 0;
- mDelayuS(10);
- /* 开启电压监控 */
- PowerMonitor( ENABLE );
- }
- /*******************************************************************************
- * Function Name : SetSysClock
- * Description : 重设系统运行时钟
- * Input : sc: 系统时钟源选择
- refer to SYS_CLKTypeDef
- * Return : None
- *******************************************************************************/
- void SetSysClock( SYS_CLKTypeDef sc)
- {
- switch( sc )
- {
- case CLK_SOURCE_LSI:
- R8_SAFE_ACCESS_SIG = SAFE_ACCESS_SIG1;
- R8_SAFE_ACCESS_SIG = SAFE_ACCESS_SIG2;
- R8_CK32K_CONFIG &= ~RB_CLK_OSC32K_XT;
- R16_CLK_SYS_CFG = (3<<6)|0x08;
- break;
- case CLK_SOURCE_LSE:
- R8_SAFE_ACCESS_SIG = SAFE_ACCESS_SIG1;
- R8_SAFE_ACCESS_SIG = SAFE_ACCESS_SIG2;
- R8_CK32K_CONFIG |= RB_CLK_OSC32K_XT;
- R16_CLK_SYS_CFG = (3<<6)|0x08;
- break;
- case CLK_SOURCE_HSE_32MHz:
- R8_SAFE_ACCESS_SIG = SAFE_ACCESS_SIG1;
- R8_SAFE_ACCESS_SIG = SAFE_ACCESS_SIG2;
- R16_CLK_SYS_CFG = RB_CLK_OSC32M_XT|(2<<6)|0x08;
- break;
- case CLK_SOURCE_HSE_16MHz:
- R8_SAFE_ACCESS_SIG = SAFE_ACCESS_SIG1;
- R8_SAFE_ACCESS_SIG = SAFE_ACCESS_SIG2;
- R16_CLK_SYS_CFG = RB_CLK_OSC32M_XT|(0<<6)|0x02;
- break;
- case CLK_SOURCE_HSE_8MHz:
- R8_SAFE_ACCESS_SIG = SAFE_ACCESS_SIG1;
- R8_SAFE_ACCESS_SIG = SAFE_ACCESS_SIG2;
- R16_CLK_SYS_CFG = RB_CLK_OSC32M_XT|(0<<6)|0x04;
- break;
- case CLK_SOURCE_HSI_32MHz:
- R8_SAFE_ACCESS_SIG = SAFE_ACCESS_SIG1;
- R8_SAFE_ACCESS_SIG = SAFE_ACCESS_SIG2;
- R16_CLK_SYS_CFG = (2<<6)|0x08;
- break;
- case CLK_SOURCE_HSI_16MHz:
- R8_SAFE_ACCESS_SIG = SAFE_ACCESS_SIG1;
- R8_SAFE_ACCESS_SIG = SAFE_ACCESS_SIG2;
- R16_CLK_SYS_CFG = (0<<6)|0x02;
- break;
- case CLK_SOURCE_HSI_8MHz:
- R8_SAFE_ACCESS_SIG = SAFE_ACCESS_SIG1;
- R8_SAFE_ACCESS_SIG = SAFE_ACCESS_SIG2;
- R16_CLK_SYS_CFG = (0<<6)|0x04;
- break;
- case CLK_SOURCE_PLL_40MHz:
- R8_SAFE_ACCESS_SIG = SAFE_ACCESS_SIG1;
- R8_SAFE_ACCESS_SIG = SAFE_ACCESS_SIG2;
- R16_CLK_SYS_CFG = RB_CLK_OSC32M_XT|(1<<6)|12;
- break;
- case CLK_SOURCE_PLL_32MHz:
- R8_SAFE_ACCESS_SIG = SAFE_ACCESS_SIG1;
- R8_SAFE_ACCESS_SIG = SAFE_ACCESS_SIG2;
- R16_CLK_SYS_CFG = RB_CLK_OSC32M_XT|(1<<6)|15;
- break;
- case CLK_SOURCE_PLL_24MHz:
- R8_SAFE_ACCESS_SIG = SAFE_ACCESS_SIG1;
- R8_SAFE_ACCESS_SIG = SAFE_ACCESS_SIG2;
- R16_CLK_SYS_CFG = RB_CLK_OSC32M_XT|(1<<6)|20;
- break;
- case CLK_SOURCE_PLL_20MHz:
- R8_SAFE_ACCESS_SIG = SAFE_ACCESS_SIG1;
- R8_SAFE_ACCESS_SIG = SAFE_ACCESS_SIG2;
- R16_CLK_SYS_CFG = RB_CLK_OSC32M_XT|(1<<6)|24;
- break;
- case CLK_SOURCE_PLL_16MHz:
- R8_SAFE_ACCESS_SIG = SAFE_ACCESS_SIG1;
- R8_SAFE_ACCESS_SIG = SAFE_ACCESS_SIG2;
- R16_CLK_SYS_CFG = RB_CLK_OSC32M_XT|(1<<6)|30;
- break;
- default :
- break;
- }
- R8_SAFE_ACCESS_SIG = 0;
- }
- /*******************************************************************************
- * Function Name : GetSysClock
- * Description : 获取当前系统时钟
- * Input : None
- * Return : Hz
- *******************************************************************************/
- UINT32 GetSysClock( void )
- {
- UINT16 rev;
- rev = R16_CLK_SYS_CFG & 0xff;
- if( (rev & RB_CLK_SYS_MOD) == (2<<6) ){ // 32M做主频
- return (32000000);
- }
- else if( (rev & RB_CLK_SYS_MOD) == (1<<6) ){ // PLL进行分频
- return (480000000/(rev&0x1f));
- }
- else if( (rev & RB_CLK_SYS_MOD) == (0<<6) ){ // 32M进行分频
- return (32000000/(rev&0x1f));
- }
- else { // 32K做主频
- return (32000);
- }
- }
- /*******************************************************************************
- * Function Name : HClk32M_Select
- * Description : 32M 高频时钟来源
- * Input : hc:
- Clk32M_HSI - 选择内部32M
- Clk32M_HSE - 选择外部32M
- * Return : None
- *******************************************************************************/
- void HClk32M_Select( HClk32MTypeDef hc)
- {
- R8_SAFE_ACCESS_SIG = SAFE_ACCESS_SIG1;
- R8_SAFE_ACCESS_SIG = SAFE_ACCESS_SIG2;
- if( hc == Clk32M_HSI)
- R16_CLK_SYS_CFG &= ~RB_CLK_OSC32M_XT;
- else
- R16_CLK_SYS_CFG |= RB_CLK_OSC32M_XT;
- R8_SAFE_ACCESS_SIG = 0;
- }
- /*******************************************************************************
- * Function Name : LClk32K_Select
- * Description : 32K 低频时钟来源
- * Input : hc:
- Clk32K_LSI - 选择内部32K
- Clk32K_LSE - 选择外部32K
- * Return : None
- *******************************************************************************/
- void LClk32K_Select( LClk32KTypeDef hc)
- {
- R8_SAFE_ACCESS_SIG = SAFE_ACCESS_SIG1;
- R8_SAFE_ACCESS_SIG = SAFE_ACCESS_SIG2;
- if( hc == Clk32K_LSI)
- R8_CK32K_CONFIG &= ~RB_CLK_OSC32K_XT;
- else
- R8_CK32K_CONFIG |= RB_CLK_OSC32K_XT;
- R8_SAFE_ACCESS_SIG = 0;
- }
- /*******************************************************************************
- * Function Name : HSECFG_Current
- * Description : HSE晶体 偏置电流配置
- * Input : c: 75%,100%,125%,150%
- * Return : None
- *******************************************************************************/
- void HSECFG_Current( HSECurrentTypeDef c )
- {
- UINT8 x32M_c;
- x32M_c = R8_XT32M_TUNE;
- x32M_c = (x32M_c&0xfc)|(c&0x03);
- R8_SAFE_ACCESS_SIG = SAFE_ACCESS_SIG1;
- R8_SAFE_ACCESS_SIG = SAFE_ACCESS_SIG2;
- R8_XT32M_TUNE = x32M_c;
- R8_SAFE_ACCESS_SIG = 0;
- }
- /*******************************************************************************
- * Function Name : HSECFG_Capacitance
- * Description : HSE晶体 负载电容配置
- * Input : c: refer to HSECapTypeDef
- * Return : None
- *******************************************************************************/
- void HSECFG_Capacitance( HSECapTypeDef c )
- {
- UINT8 x32M_c;
- x32M_c = R8_XT32M_TUNE;
- x32M_c = (x32M_c&0x8f)|(c<<4);
- R8_SAFE_ACCESS_SIG = SAFE_ACCESS_SIG1;
- R8_SAFE_ACCESS_SIG = SAFE_ACCESS_SIG2;
- R8_XT32M_TUNE = x32M_c;
- R8_SAFE_ACCESS_SIG = 0;
- }
- /*******************************************************************************
- * Function Name : LSECFG_Current
- * Description : LSE晶体 偏置电流配置
- * Input : c: 70%,100%,140%,200%
- * Return : None
- *******************************************************************************/
- void LSECFG_Current( LSECurrentTypeDef c )
- {
- UINT8 x32K_c;
- x32K_c = R8_XT32K_TUNE;
- x32K_c = (x32K_c&0xfc)|(c&0x03);
- R8_SAFE_ACCESS_SIG = SAFE_ACCESS_SIG1;
- R8_SAFE_ACCESS_SIG = SAFE_ACCESS_SIG2;
- R8_XT32K_TUNE = x32K_c;
- R8_SAFE_ACCESS_SIG = 0;
- }
- /*******************************************************************************
- * Function Name : LSECFG_Capacitance
- * Description : LSE晶体 负载电容配置
- * Input : c: refer to LSECapTypeDef
- * Return : None
- *******************************************************************************/
- void LSECFG_Capacitance( LSECapTypeDef c )
- {
- UINT8 x32K_c;
- x32K_c = R8_XT32K_TUNE;
- x32K_c = (x32K_c&0x0f)|(c<<4);
- R8_SAFE_ACCESS_SIG = SAFE_ACCESS_SIG1;
- R8_SAFE_ACCESS_SIG = SAFE_ACCESS_SIG2;
- R8_XT32K_TUNE = x32K_c;
- R8_SAFE_ACCESS_SIG = 0;
- }
- /*******************************************************************************
- * Function Name : Calibration_LSI
- * Description : 校准内部32K时钟
- * Input : None
- * Return : 误差:千分之(单位)
- *******************************************************************************/
- // 0-26030Hz 1023-44220Hz
- UINT16 Calibration_LSI( void )
- {
- UINT16 rev, basev;
- UINT32 calv;
- UINT16 i;
- UINT16 loc, loc_t;
- signed short CNT_STEP_K;
- signed short diff_1, diff_2, diffc;
- UINT8 k=0;
- /* 根据当前时钟获取标称值和斜率(T-step) */
- rev = R16_CLK_SYS_CFG & 0xff;
- // CNT_STEP_K=Fsys*5*(1/26030 - 1/44220)/1023;
- if( (rev & RB_CLK_SYS_MOD) == (2<<6) ){ // 32M做主频
- calv = ((5*32000000+(CAB_LSIFQ>>1))/CAB_LSIFQ);
- CNT_STEP_K = -3;
- }
- else if( (rev & RB_CLK_SYS_MOD) == (1<<6) ){ // PLL进行分频
- calv = (((UINT32)5*480000000/(rev&0x1f)+(CAB_LSIFQ>>1))/CAB_LSIFQ);
- CNT_STEP_K =( -37-((rev&0x1f)-1))/(rev&0x1f);
- }
- else if( (rev & RB_CLK_SYS_MOD) == (0<<6) ){ // 32M进行分频
- calv = ((5*32000000/(rev&0x1f)+(CAB_LSIFQ>>1))/CAB_LSIFQ);
- CNT_STEP_K = ( -3-((rev&0x1f)-1))/(rev&0x1f);
- }
- else { // 32K做主频
- calv = (5);
- CNT_STEP_K = 0;
- }
- /* 校准 */
- basev = ( calv &0xfff ); // 获取校准标称值
- // loc = 1023*(f-26030)/f/((44220-26030)/44220) 经验曲线
- loc = R16_INT32K_TUNE;
- diff_2 = 0;
- diffc = 0;
- R8_SAFE_ACCESS_SIG = SAFE_ACCESS_SIG1;
- R8_SAFE_ACCESS_SIG = SAFE_ACCESS_SIG2;
- R8_OSC_CAL_CTRL = RB_OSC_CNT_EN;
- do
- {
- R8_SAFE_ACCESS_SIG = SAFE_ACCESS_SIG1;
- R8_SAFE_ACCESS_SIG = SAFE_ACCESS_SIG2;
- R16_INT32K_TUNE = loc;
- R8_SAFE_ACCESS_SIG = 0;
- /* 读取当前值 */
- while(!(R8_OSC_CAL_CTRL&RB_OSC_CNT_HALT));
- i = R16_OSC_CAL_CNT; // 用于丢弃
- while(R8_OSC_CAL_CTRL&RB_OSC_CNT_HALT);
- while(!(R8_OSC_CAL_CTRL&RB_OSC_CNT_HALT));
- i = R16_OSC_CAL_CNT; // 实时校准后采样值
- k++;
- diff_1 = i-basev;
- if( diff_1 == 0 ){
- return 0; // 校准正好
- }
- else if((diff_1*diff_2)<0){ // 处于两点之间
- if((diffc == 1) || (diffc == -1) || (diffc == 0))
- {
- // 都变成正数
- if( diff_2<0 ) diff_2 = ~(diff_2-1);
- else diff_1 = ~(diff_1-1);
- if(diff_1>diff_2){
- R8_SAFE_ACCESS_SIG = SAFE_ACCESS_SIG1;
- R8_SAFE_ACCESS_SIG = SAFE_ACCESS_SIG2;
- R16_INT32K_TUNE = loc_t;
- R8_SAFE_ACCESS_SIG = 0;
- return (diff_2*1000/basev); // 返回误差值,千分之
- }
- else return(diff_1*1000/basev);
- }
- }
- // 保存上一次值
- diff_2 = diff_1;
- loc_t = loc;
- diffc = diff_1/CNT_STEP_K;
- loc = loc - diffc;
- if( loc == loc_t )
- {
- if( diff_1 > 0 ) loc = loc+1; // 当前频率偏小
- else loc = loc-1; // 当前频率偏大
- }
- }while( k<20 );
- return(0xff);
- }
- /*******************************************************************************
- * Function Name : RTCInitTime
- * Description : RTC时钟初始化当前时间
- * Input : y: 配置时间 - 年
- MAX_Y = BEGYEAR + 44
- mon: 配置时间 - 月
- MAX_MON = 12
- d: 配置时间 - 日
- MAX_D = 31
- h: 配置时间 - 小时
- MAX_H = 23
- m: 配置时间 - 分钟
- MAX_M = 59
- s: 配置时间 - 秒
- MAX_S = 59
- * Return : None
- *******************************************************************************/
- void RTC_InitTime( UINT16 y, UINT16 mon, UINT16 d, UINT16 h, UINT16 m, UINT16 s )
- {
- UINT32 t;
- UINT16 year, month, day, sec2, t32k;
- UINT8V clk_pin;
- year = y;
- month = mon;
- day = 0;
- while ( year > BEGYEAR )
- {
- day += YearLength( year-1 );
- year--;
- }
- while ( month > 1 )
- {
- day += monthLength( IsLeapYear( y ), month-2 );
- month--;
- }
- day += d-1;
- sec2 = (h%24)*1800+m*30+s/2;
- t32k = (s&1)?(0x8000):(0);
- t = sec2;
- t = t<<16 | t32k;
- do{
- clk_pin = (R8_CK32K_CONFIG&RB_32K_CLK_PIN);
- }while( (clk_pin != (R8_CK32K_CONFIG&RB_32K_CLK_PIN)) || (!clk_pin) );
- R8_SAFE_ACCESS_SIG = SAFE_ACCESS_SIG1;
- R8_SAFE_ACCESS_SIG = SAFE_ACCESS_SIG2;
- R32_RTC_TRIG = day;
- R8_RTC_MODE_CTRL |= RB_RTC_LOAD_HI;
- R32_RTC_TRIG = t;
- R8_RTC_MODE_CTRL |= RB_RTC_LOAD_LO;
- R8_SAFE_ACCESS_SIG = 0;
- }
- /*******************************************************************************
- * Function Name : RTC_GetTime
- * Description : 获取当前时间
- * Input : y: 获取到的时间 - 年
- MAX_Y = BEGYEAR + 44
- mon: 获取到的时间 - 月
- MAX_MON = 12
- d: 获取到的时间 - 日
- MAX_D = 31
- ph: 获取到的时间 - 小时
- MAX_H = 23
- pm: 获取到的时间 - 分钟
- MAX_M = 59
- ps: 获取到的时间 - 秒
- MAX_S = 59
- * Return : None
- *******************************************************************************/
- void RTC_GetTime( PUINT16 py, PUINT16 pmon, PUINT16 pd, PUINT16 ph, PUINT16 pm, PUINT16 ps )
- {
- UINT32 t;
- UINT16 day, sec2, t32k;
- day = R32_RTC_CNT_DAY & 0x3FFF;
- sec2 = R16_RTC_CNT_2S;
- t32k = R16_RTC_CNT_32K;
- t = sec2*2 + ((t32k<0x8000)?0:1);
- *py = BEGYEAR;
- while ( day >= YearLength( *py ) )
- {
- day -= YearLength( *py );
- (*py)++;
- }
- *pmon = 0;
- while ( day >= monthLength( IsLeapYear( *py ), *pmon ) )
- {
- day -= monthLength( IsLeapYear( *py ), *pmon );
- (*pmon)++;
- }
- (*pmon) ++;
- *pd = day+1;
- *ph = t/3600;
- *pm = t%3600/60;
- *ps = t%60;
- }
- /*******************************************************************************
- * Function Name : RTC_SetCycle32k
- * Description : 基于LSE/LSI时钟,配置当前RTC 周期数
- * Input : cyc: 配置周期计数初值 - cycle
- MAX_CYC = 0xA8BFFFFF = 2831155199
- * Return : None
- *******************************************************************************/
- void RTC_SetCycle32k( UINT32 cyc )
- {
- UINT8V clk_pin;
- do{
- clk_pin = (R8_CK32K_CONFIG&RB_32K_CLK_PIN);
- }while( (clk_pin != (R8_CK32K_CONFIG&RB_32K_CLK_PIN)) || (!clk_pin) );
- R8_SAFE_ACCESS_SIG = SAFE_ACCESS_SIG1;
- R8_SAFE_ACCESS_SIG = SAFE_ACCESS_SIG2;
- R32_RTC_TRIG = cyc;
- R8_RTC_MODE_CTRL |= RB_RTC_LOAD_LO;
- R8_SAFE_ACCESS_SIG = 0;
- }
- /*******************************************************************************
- * Function Name : RTC_GetCycle32k
- * Description : 基于LSE/LSI时钟,获取当前RTC 周期数
- * Input : None
- * Return : 返回当前周期数,MAX_CYC = 0xA8BFFFFF = 2831155199
- *******************************************************************************/
- UINT32 RTC_GetCycle32k( void )
- {
- UINT32 i;
- do{
- i = R32_RTC_CNT_32K;
- }while( i != R32_RTC_CNT_32K );
- return (i);
- }
- /*******************************************************************************
- * Function Name : RTC_TMRFunCfg
- * Description : RTC定时模式配置
- * Input : t:
- refer to RTC_TMRCycTypeDef
- * Return : None
- *******************************************************************************/
- void RTC_TMRFunCfg( RTC_TMRCycTypeDef t )
- {
- R8_SAFE_ACCESS_SIG = SAFE_ACCESS_SIG1;
- R8_SAFE_ACCESS_SIG = SAFE_ACCESS_SIG2;
- R8_RTC_MODE_CTRL &= ~(RB_RTC_TMR_EN|RB_RTC_TMR_MODE);
- R8_RTC_MODE_CTRL |= RB_RTC_TMR_EN | (t);
- R8_SAFE_ACCESS_SIG = 0;
- }
- /*******************************************************************************
- * Function Name : RTC_TRIGFunCfg
- * Description : RTC时间触发模式配置
- * Input : cyc: 相对当前时间的触发间隔时间,基于LSE/LSI时钟周期数
- * Return : None
- *******************************************************************************/
- void RTC_TRIGFunCfg( UINT32 cyc )
- {
- UINT32 t;
- t = RTC_GetCycle32k() + cyc;
- if( t>0xA8C00000) t -= 0xA8C00000;
- if( t&0xFFFF ) t = t+0x10000;
- R8_SAFE_ACCESS_SIG = SAFE_ACCESS_SIG1;
- R8_SAFE_ACCESS_SIG = SAFE_ACCESS_SIG2;
- R32_RTC_TRIG = t;
- R8_RTC_MODE_CTRL |= RB_RTC_TRIG_EN;
- R8_SAFE_ACCESS_SIG = 0;
- }
- /*******************************************************************************
- * Function Name : RTC_ModeFunDisable
- * Description : RTC 模式功能关闭
- * Input : m: 需要关闭的当前模式
- * Return : None
- *******************************************************************************/
- void RTC_ModeFunDisable( RTC_MODETypeDef m )
- {
- UINT8 i=0;
- if( m == RTC_TRIG_MODE ) i |= RB_RTC_TRIG_EN;
- else if( m == RTC_TMR_MODE ) i |= RB_RTC_TMR_EN;
- R8_SAFE_ACCESS_SIG = SAFE_ACCESS_SIG1;
- R8_SAFE_ACCESS_SIG = SAFE_ACCESS_SIG2;
- R8_RTC_MODE_CTRL &= ~(i);
- R8_SAFE_ACCESS_SIG = 0;
- }
- /*******************************************************************************
- * Function Name : RTC_GetITFlag
- * Description : 获取RTC中断标志
- * Input : f:
- refer to RTC_EVENTTypeDef
- * Return : 中断标志状态:
- 0 - 未发生事件
- (!0) - 发生事件
- *******************************************************************************/
- UINT8 RTC_GetITFlag( RTC_EVENTTypeDef f )
- {
- if( f == RTC_TRIG_EVENT )
- return ( R8_RTC_FLAG_CTRL & RB_RTC_TRIG_FLAG );
- else
- return ( R8_RTC_FLAG_CTRL & RB_RTC_TMR_FLAG );
- }
- /*******************************************************************************
- * Function Name : RTC_ClearITFlag
- * Description : 清除RTC中断标志
- * Input : f:
- refer to RTC_EVENTTypeDef
- * Return : None
- *******************************************************************************/
- void RTC_ClearITFlag( RTC_EVENTTypeDef f )
- {
- switch( f )
- {
- case RTC_TRIG_EVENT:
- R8_RTC_FLAG_CTRL = RB_RTC_TRIG_CLR;
- break;
- case RTC_TMR_EVENT:
- R8_RTC_FLAG_CTRL = RB_RTC_TMR_CLR;
- break;
- default :
- break;
- }
- }
|