武汉网站策划公司房地产销售工作内容
由于三星的评估板并没有用rtc电池,所以提供的bsp是不能保存时间的,即使你在板子上加了rtc电池,不过修改起来也非常简单,修改smdk2410\KERNEL\HAL\ARM下的timer.c,我把修改过的oemsetrealtime函数贴在下面,这样改绝对没有问题。
BOOL
OEMSetRealTime(LPSYSTEMTIME lpst)
{
OEMSetRealTime(LPSYSTEMTIME lpst)
{
volatile RTCreg *s2410RTC = (RTCreg *)RTC_BASE;
static int firsttime = 0;//firsttime是静态的,所以每进入一次都会加1
if ( firsttime == 0 )//判断是否第一次进入
{
(void)OEMGetRealTime(lpst);
if((lpst->wSecond>59)||(lpst->wMinute>59)||(lpst->wHour> 24)||(1>lpst->wDay>31)||(1>lpst->wMonth>12))//判断读出的RTC 时钟是否有效,否则设置
{
lpst->wSecond = 1;
lpst->wMinute = 1;
lpst->wHour = 1;
lpst->wDay = 11;
lpst->wMonth = 11;
lpst->wDayOfWeek= 5;
lpst->wYear = 2004;
} firsttime = 1;
}
// enable RTC control
s2410RTC->rRTCCON = 0x1;//使能RTC控制器,主要是允许写RTC寄存器
static int firsttime = 0;//firsttime是静态的,所以每进入一次都会加1
if ( firsttime == 0 )//判断是否第一次进入
{
(void)OEMGetRealTime(lpst);
if((lpst->wSecond>59)||(lpst->wMinute>59)||(lpst->wHour> 24)||(1>lpst->wDay>31)||(1>lpst->wMonth>12))//判断读出的RTC 时钟是否有效,否则设置
{
lpst->wSecond = 1;
lpst->wMinute = 1;
lpst->wHour = 1;
lpst->wDay = 11;
lpst->wMonth = 11;
lpst->wDayOfWeek= 5;
lpst->wYear = 2004;
} firsttime = 1;
}
// enable RTC control
s2410RTC->rRTCCON = 0x1;//使能RTC控制器,主要是允许写RTC寄存器
s2410RTC->rBCDSEC = (unsigned char)TO_BCD(lpst->wSecond );
s2410RTC->rBCDMIN = (unsigned char)TO_BCD(lpst->wMinute );
s2410RTC->rBCDHOUR = (unsigned char)TO_BCD(lpst->wHour );
s2410RTC->rBCDMIN = (unsigned char)TO_BCD(lpst->wMinute );
s2410RTC->rBCDHOUR = (unsigned char)TO_BCD(lpst->wHour );
s2410RTC->rBCDDATE = (unsigned char)(lpst->wDayOfWeek + 1);
s2410RTC->rBCDDAY = (unsigned char)TO_BCD(lpst->wDay );
s2410RTC->rBCDMON = (unsigned char)TO_BCD(lpst->wMonth );
s2410RTC->rBCDYEAR = (unsigned char)TO_BCD((lpst->wYear % 100));
s2410RTC->rBCDMON = (unsigned char)TO_BCD(lpst->wMonth );
s2410RTC->rBCDYEAR = (unsigned char)TO_BCD((lpst->wYear % 100));
RETAILMSG(0,(TEXT("OEMSetRealTime: Year: %u, Month: %u, Day: %u, Hour: %u, Minute: %u, second: %u rcnr=%Xh\r\n"), lpst->wYear, lpst->wMonth,lpst->wDay, lpst->wHour, lpst->wMinute,lpst->wSecond,s2410RTC->rRTCCON));
RETAILMSG(0,(TEXT("OEMSetRealTime(register): Year: %x, Month: %x, Day: %x, Hour: %x, Minute: %x, second: %x rcnr=%Xh\r\n"), \
s2410RTC->rBCDYEAR, s2410RTC->rBCDMON,s2410RTC->rBCDDAY, s2410RTC->rBCDHOUR, s2410RTC->rBCDMIN,s2410RTC->rBCDSEC,s2410RTC->rRTCCON));
RETAILMSG(0,(TEXT("OEMSetRealTime(register): Year: %x, Month: %x, Day: %x, Hour: %x, Minute: %x, second: %x rcnr=%Xh\r\n"), \
s2410RTC->rBCDYEAR, s2410RTC->rBCDMON,s2410RTC->rBCDDAY, s2410RTC->rBCDHOUR, s2410RTC->rBCDMIN,s2410RTC->rBCDSEC,s2410RTC->rRTCCON));
// disable RTC control
s2410RTC->rRTCCON = 0; //&= ~0x1;
// Just certify heart bit
// timer_cnt = 0;
return TRUE;s2410RTC->rRTCCON = 0; //&= ~0x1;
// Just certify heart bit
// timer_cnt = 0;
}
转载于:https://blog.51cto.com/buaadallas/80919