图文概述:






代码:
MyRTC.c:
#include "stm32f10x.h" // Device header
#include <time.h>
/* 设置显示的初始的日期时间结构体 */
struct tm MainTime = {57, 59, 23, 9, 10, 2023}; //秒 分 时 日 月(偏移量-1) 年(从1970开始算,有偏移)
void MyRTC_SetTime(void);
/**
* @brief MyRTC_Init---对RTC进行初始化
* @param 无
* @retval 无
*/
void MyRTC_Init(void)
{
//1.开启PWR和BKP外设的时钟
RCC_APB1PeriphClockCmd(RCC_APB1Periph_BKP, ENABLE);
RCC_APB1PeriphClockCmd(RCC_APB1Periph_PWR, ENABLE);
//2.PWR使能BKP
PWR_BackupAccessCmd(ENABLE);
/*
判断备用电源有没有断电:若断电过则备用寄存器的值会清除,
就需要重新初始化,若没有断电过则不需要再进行初始化
(0xA5A5相当于一个标志,用来查看是否还存在备用寄存器内)
*/
if(BKP_ReadBackupRegister(BKP_DR1) != 0xA5A5)
{
//3.开启