初级会员

- 积分
- 135
- 金钱
- 135
- 注册时间
- 2012-8-17
- 在线时间
- 0 小时
|

楼主 |
发表于 2012-9-11 18:16:34
|
显示全部楼层
初始化:
while(!(RTC->CRL&(1<<3)));//等待RTC寄存器同步
RTC->CRH|=0X01; //允许秒中断
RTC->CRH|=0X02; //允许闹钟中断
EXTI->IMR|=1<<17;
EXTI->RTSR|=1<<17;
//EXTI->FTSR|=1<<17;
while(!(RTC->CRL&(1<<5)));//等待RTC寄存器操作完成
MY_NVIC_Init(1,0,RTC_IRQChannel,2);//RTC,G2,P,2S2.优先级最低
MY_NVIC_Init(0,0,RTCAlarm_IRQChannel,2);
秒中断:
void RTC_IRQHandler(void)
{
if(RTC->CRL&0x0001)//秒钟中断
{
RTC_Get();//更新时间
}
RTC->CRL&=0X0FFA; //清除溢出,秒钟中断标志
while(!(RTC->CRL&(1<<5)));//等待RTC寄存器操作完成
}
闹钟中断:
void RTCAlarm_IRQHandler(void)
{
timer.alarm=1; //闹钟处理
//timer.alarm++;
RTC->CRL&=0X0FFD; //清闹钟中断
while(!(RTC->CRL&(1<<5)));//等待RTC寄存器操作完成
LCD_ShowString(20,182,"CLOCK!");
}
测试发现一直在闹钟中断里,来回做,标志清的不对吗?但秒中断却能行 |
|