stm32 利用备份寄存器保存实时时钟数据
时间:11-09
来源:互联网
点击:
stm32f10x_it.c
/** Function Name : RTC_IRQHandler* Description : This function handles RTC global interrupt request.* Input : None* Output : None* Return : None*/void RTC_IRQHandler(void){if(RTC_GetITStatus(RTC_IT_SEC) != RESET) //读取秒中断状态{RTC_ClearITPendingBit(RTC_IT_SEC); //清除秒中断标志 /* 时钟更新标志置位 */TimeDisplay = 1; RTC_WaitForLastTask(); //等待上一次对RTC寄存器的写操作是否已经完成 if(RTC_GetCounter() == 0x0001517F) //当前时间是23:59:59时 复位为0:0:0 {RCC_APB1PeriphClockCmd(RCC_APB1Periph_PWR | RCC_APB1Periph_BKP, ENABLE);PWR->CR|=1<8; //取消备份区写保护RTC_EnterConfigMode(); //允许配置 RTC_WaitForLastTask(); //等待上一次对RTC寄存器的写操作是否已经完成 RTC_SetCounter(0x0); //写入复位值RTC_WaitForLastTask(); //等待上一次对RTC寄存器的写操作是否已经完成 CalenderCount();BKP_WriteBackupRegister(BKP_DR2,GetYear());BKP_WriteBackupRegister(BKP_DR3,GetMonth()); BKP_WriteBackupRegister(BKP_DR4,GetDay());}else if(RTC_GetCounter() > 0x0001517F) //当再次上电后计数值超过0x00015180, 复位为当前值取模0x00015180。 {RCC_APB1PeriphClockCmd(RCC_APB1Periph_PWR | RCC_APB1Periph_BKP, ENABLE);PWR->CR|=1<8; //取消备份区写保护RTC_EnterConfigMode(); //允许配置 RTC_WaitForLastTask(); //等待上一次对RTC寄存器的写操作是否已经完成 RTC_SetCounter(RTC_GetCounter()%0x0001517F); //写入复位值RTC_WaitForLastTask(); //等待上一次对RTC寄存器的写操作是否已经完成 CalenderCount();BKP_WriteBackupRegister(BKP_DR2,GetYear());BKP_WriteBackupRegister(BKP_DR3,GetMonth()); BKP_WriteBackupRegister(BKP_DR4,GetDay());}}} stm32备份寄存器实时时钟数 相关文章:
- Windows CE 进程、线程和内存管理(11-09)
- RedHatLinux新手入门教程(5)(11-12)
- uClinux介绍(11-09)
- openwebmailV1.60安装教学(11-12)
- Linux嵌入式系统开发平台选型探讨(11-09)
- Windows CE 进程、线程和内存管理(二)(11-09)
