java解析rtc_关于STM32 RTC的使用

直接上代码,很爽。

1、RTC的首次初始化问题

使能时钟:RCC_APB1PeriphClockCmd(RCC_APB1Periph_PWR | RCC_APB1Periph_BKP, ENABLE);

void RTC_Configuration(void)

{

/* Allow access to BKP Domain */

PWR_BackupAccessCmd(ENABLE);

/* Enable LSE */

RCC_LSEConfig(RCC_LSE_ON);

/* Wait till LSE is ready */

while (RCC_GetFlagStatus(RCC_FLAG_LSERDY) == RESET)

{}

/* Select LSE as RTC Clock Source */

RCC_RTCCLKConfig(RCC_RTCCLKSource_LSE);

/* Enable RTC Clock */

RCC_RTCCLKCmd(ENABLE);

/* Wait for RTC registers synchronization */

RTC_WaitForSynchro();

/* Wait until last write operation on RTC registers has finished */

//RTC_WaitForLastTask();

/* Enable the RTC Second */

//RTC_ITConfig(RTC_IT_SEC, ENABLE);

/* Wait until last write operation on RTC registers has finished */

// RTC_WaitForLastTask();

/* Set RTC prescaler: set RTC period to 1sec */

RTC_SetPrescaler(32767); /* RTC period = RTCCLK/RTC_PR = (32.768 KHz)/(32767+1) */

/* Wait until last write operation on RTC registers has finished */

RTC_WaitForLastTask();

}

2、设置时间

PWR_BackupAccessCmd(ENABLE); //必须有该行,否则写不进去

RTC_WaitForLastTask();

RTC_SetCounter(1356998400);//2013年1月1号0时0分0秒

BKP_WriteBackupRegister(BKP_DR1, 0xA5A5);//时间更新标志,下次开机读取该值,如果已经设置,则不需要设置时间

3、第二次开机RTC操作

if (BKP_ReadBackupRegister(BKP_DR1) != 0xA5A5){

/* Backup data register value is not correct or not yet programmed (when

the first time the program is executed) */

/* RTC Configuration */

RTC_Configuration();

PWR_BackupAccessCmd(ENABLE);

RTC_WaitForLastTask();

RTC_SetCounter(1356998400);//2013年1月1号0时0分0秒1356969600UL

BKP_WriteBackupRegister(BKP_DR1, 0xA5A5);//时间更新标志

}

4、读取时间

UNIXTime=RTC_GetCounter();

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值