初级会员

- 积分
- 64
- 金钱
- 64
- 注册时间
- 2014-3-9
- 在线时间
- 0 小时
|

楼主 |
发表于 2014-3-18 22:42:40
|
显示全部楼层
回复【14楼】正点原子:
---------------------------------
//RTC中断服务函数
void RTC_IRQHandler(void)
{
if(RTC->CRL&0x0001)//秒钟中断
{
RTC_Get();//更新时间
if((timer.hour!=13)||((timer.hour==13)&&((timer.min<39)||(timer.min>=40))))//在13:38和13:40时间外休眠
{
Sys_Standby(); //13:39和13:40时间工作
}
}
if(RTC->CRL&0x0002)//闹钟中断
{
RTC->CRL&=~(0x0002);//清闹钟中断
}
RTC->CRL&=0X0FFA; //清除溢出,秒钟中断标志
while(!(RTC->CRL&(1<<5)));//等待RTC寄存器操作完成
}
原子哥,现在系统能RTC唤醒,但是时分秒在LCD上不能正常显示,显示的始终是RTC_Set(2014,1,8,13,38,45);而且刷屏效果不是很好,有“影子”。这是为什么呢?
int main()
{
u8 t=0;
SystemInit();
delay_init(72);
LED_Init();
uart_init(9600);
NVIC_Configuration();
LCD_Init();
RTC_Init();
LCD_Clear(BLUE);
POINT_COLOR=RED;
LCD_ShowString(30,30,"RTC TEST");
LCD_ShowString(30,50," 2010 / 12 / 30 ");
LCD_ShowString(30,70," ");
LCD_ShowString(20,110," ");
POINT_COLOR=BLUE;
while(1)
{
if(t!=timer.sec)
{
t=timer.sec;
LCD_ShowNum(30,70,timer.w_year,4,16);
LCD_ShowNum(70,70,timer.w_month,2,16);
LCD_ShowNum(90,70,timer.w_date,2,16);
switch(timer.week)
{
case 0 CD_ShowString(30,90,"Sunday");break;
case 1 CD_ShowString(30,90,"Monday");break;
case 2 CD_ShowString(30,90,"Tuesday");break;
case 3 CD_ShowString(30,90,"Wednesday ");break;
case 4 CD_ShowString(30,90,"Thursday");break;
case 5 CD_ShowString(30,90,"Friday");break;
case 6 CD_ShowString(30,90,"Saturday");break;
}
LCD_ShowNum(30,110,timer.hour,2,16);
LCD_ShowNum(50,110,timer.min,2,16);
LCD_ShowNum(80,110,timer.sec,2,16);
LED0=!LED0;
}
delay_ms(10);
}
} |
|