📄 rtc.c
字号:
/******************************************************************************
* Copyright (c) 2006 Primax Corporation,Ltd. All rights reserved.
*
* Author: Junny Fu
*
* Description: API of ZR4200 RTC
*
* Revision History:
* Date Author Description
******************************************************************************/
#include "RTC.h"
#include "Fireregs.h"
#include "Nucleus.h"
API_RET EnableRTCAccess()
{
WRITE_BYTE(RTCCTL+3,0x80);//WRITE_ADR(RTCCTL,0x80000000);
WRITE_BYTE(RTCCTL+3,0x40);//WRITE_ADR(RTCCTL,0x40000000);
WRITE_BYTE(RTCCTL+3,0xC0);//WRITE_ADR(RTCCTL,0xc0000000);
WRITE_BYTE(RTCCTL+3,0x00);//WRITE_ADR(RTCCTL,0x00000000);
WRITE_BYTE(RTCCTL+3,0x80);//WRITE_ADR(RTCCTL,0x80000000);
WRITE_BYTE(RTCCTL+3,0x40);//WRITE_ADR(RTCCTL,0x40000000);
WRITE_BYTE(RTCCTL+3,0xC0);//WRITE_ADR(RTCCTL,0xc0000000);
WRITE_BYTE(RTCCTL+3,0x00);//WRITE_ADR(RTCCTL,0x00000000);
return API_OK;
}
API_RET DisableRTCAccess()
{
WRITE_BYTE(RTCCTL+3,0x80);//WRITE_ADR(RTCCTL,0x80000000);
WRITE_BYTE(RTCCTL+3,0x00);//WRITE_ADR(RTCCTL,0x00000000);
WRITE_BYTE(RTCCTL+3,0x80);//WRITE_ADR(RTCCTL,0x80000000);
WRITE_BYTE(RTCCTL+3,0x00);//WRITE_ADR(RTCCTL,0x00000000);
WRITE_BYTE(RTCCTL+3,0x80);//WRITE_ADR(RTCCTL,0x80000000);
WRITE_BYTE(RTCCTL+3,0x00);//WRITE_ADR(RTCCTL,0x00000000);
WRITE_BYTE(RTCCTL+3,0x80);//WRITE_ADR(RTCCTL,0x80000000);
WRITE_BYTE(RTCCTL+3,0x00);//WRITE_ADR(RTCCTL,0x00000000);
return API_OK;
}
API_RET SetRTC_C(Uint32 RTdata)
{
Uint32 read;
WRITE_ADR(RTCCNT, RTdata);
//WRITE_ADR(RTCCTL,0x00000001);
WRITE_BYTE(RTCCTL,0x01);
read = 0x01;
while((read & 0x01) != 0)
{
NU_Sleep(20);
read = READ_BYTE(RTCCTL);
}
return API_OK;
}
Uint32 ReadRTC_C()
{
Uint32 read,RTdata;
//WRITE_ADR(RTCCTL,0x00000003);
WRITE_BYTE(RTCCTL,0x03);
read = 0x01;
while((read & 0x01) != 0)
{
read = READ_BYTE(RTCCTL);
// NU_Sleep(20);
}
RTdata = READ_ADR(RTCCNT);
return RTdata;
}
Bool IsRTCValid()
{
Uint32 RTdata;
RTdata = READ_BYTE(RTCCTL);
if((RTdata & 0x04) != 0)
return TRUE;
else
return FALSE;
}
API_RET SetRTCValid()
{
// Uint32 read;
Uint8 RTdata;
RTdata = 0x04;
WRITE_BYTE(RTCCTL,RTdata);
/* read = 0x05;
while((read & 0x05) != 0x04)
{
read = READ_BYTE(RTCCTL);
}
*/
return API_OK;
}
⌨️ 快捷键说明
复制代码
Ctrl + C
搜索代码
Ctrl + F
全屏模式
F11
切换主题
Ctrl + Shift + D
显示快捷键
?
增大字号
Ctrl + =
减小字号
Ctrl + -