资深版主 
   
	- 积分
 - 4307
 
        - 金钱
 - 4307 
 
       - 注册时间
 - 2018-6-30
 
      - 在线时间
 - 808 小时
 
 
 
 | 
 
 本帖最后由 1208 于 2018-12-19 12:34 编辑  
 
mini板子RTC闹钟实验:当到达指定的时间闹钟灯就会亮, 
按键KEY0按下灯就会熄灭,如果按键没按,灯10s后也会自动熄灭 
战舰板子RTC闹钟实验:当到达指定的时间闹钟就会响, 
按键KEY0按下灯就会停止,如果按键没按,灯10s后也会自动停止 
 
1)RTC闹钟时钟实验  每次使用都要修改指定的后备寄存器中读出数据0x5050,重新下载 
才能显示闹钟,让灯亮起来。(重新复位后是不能使用闹钟的) 
if (BKP_ReadBackupRegister(BKP_DR1) != 0x5051) //每次重新下载要改 
2)闹钟会在10s后响应    
        RTC_Set(2018,4,8,21,34,50);  //设置时间 
        RTC_WaitForLastTask(); 
        RTC_WaitForSynchro(); 
        ALR_Set(2018,4,8,21,35,0);    //设置闹钟 
按键KEY0按下灯就会熄灭,如果按键没按,灯10s后也会自动熄灭 
        if(KEY0==0) 
        { 
            BEEP = 0; 
        } 
       if(count>20)            //只会亮10s,跟时钟是同步走的 
        { 
            BEEP = 0; 
            count = 0 ; 
        } 
3)要开启闹钟相应,则要先启动中断线17,下面中文参考手册17的资料 
     若ALRF=1且ALRIE=1,则允许产生RTC全局中断。如果在EXTI控制器中允许产生EXTI线 17 
中断,则允许产生RTC全局中断和RTC闹钟中断。 
     若ALRF=1,如果在EXTI控制器中设置了EXTI线 17的中断模式,则允许产生RTC闹钟中断; 
如果在EXTI控制器中设置了EXTI线 17的事件模式,则这条线上会产生一个脉冲(不会产生RTC 
闹钟中断)  
    EXTI_ClearITPendingBit(EXTI_Line17); 
    EXTI_InitStructure.EXTI_Mode = EXTI_Mode_Interrupt; 
    EXTI_InitStructure.EXTI_Line = EXTI_Line17; 
    EXTI_InitStructure.EXTI_Trigger = EXTI_Trigger_Rising; 
    EXTI_InitStructure.EXTI_LineCmd = ENABLE; 
    EXTI_Init(&EXTI_InitStructure); 
//闹钟中断 
void RTCAlarm_IRQHandler(void) 
{ 
    if(RTC_GetITStatus(RTC_IT_ALR) != RESET) 
    {         
        BEEP = 1; 
    }     
        EXTI_ClearITPendingBit(EXTI_Line17); 
        RTC_WaitForLastTask(); 
        RTC_ClearITPendingBit(RTC_IT_ALR); 
        RTC_WaitForLastTask(); 
 } 
4)切记要开中断,否则闹钟不会相应 
    RTC_ITConfig(RTC_IT_SEC|RTC_IT_ALR, ENABLE);        //使能RTC秒中断和闹钟中断 
我将时间的计数放在秒中断里面RTC时钟中断,每秒可以触发一次, 
这样做的目的是起到定时关掉闹钟的效果 
extern int count; 
void RTC_IRQHandler(void)  
{ 
    if(RTC_GetITStatus(RTC_IT_SEC)!=RESET) 
    { 
        RTC_Get(); 
        count++; 
    }    
        RTC_ClearITPendingBit(RTC_IT_OW|RTC_IT_SEC); 
        RTC_WaitForLastTask(); 
} 
5)声明闹钟结构体 
_alr_obj ALR; //闹钟结构体 
typedef struct 
{ 
    vu8 year; 
    vu8 month; 
    vu8 day; 
    vu8 hour; 
    vu8 min; 
    vu8 sec; 
}_alr_obj; 
 
  
 
 |   
 
 
 
 |