STM32标准库开发—实时时钟(BKP+RTC)

BKP配置结构

注意事项
BKP基本操作

时钟初始化

c 复制代码
	RCC_APB1PeriphClockCmd(RCC_APB1Periph_PWR, ENABLE);
	RCC_APB1PeriphClockCmd(RCC_APB1Periph_BKP, ENABLE);
	PWR_BackupAccessCmd(ENABLE);//设置PWR_CR的DBP,使能对PWR以及BKP的访问

读写寄存器操作

c 复制代码
	uint16_t ArrayWrite[] = {0x1234, 0x5678};
	BKP_WriteBackupRegister(BKP_DR1, ArrayWrite[0]);
	BKP_WriteBackupRegister(BKP_DR2, ArrayWrite[1]);
	
	uint16_t ArrayRead[2];
	ArrayRead[0] = BKP_ReadBackupRegister(BKP_DR1);
	ArrayRead[1] = BKP_ReadBackupRegister(BKP_DR2);

RTC配置结构

RTC实现实时时钟

设置时间函数,已经手动更改为东八区时间,默认情况下time.h里为伦敦时区

c 复制代码
void MyRTC_SetTime(void)
{
	time_t time_cnt;
	struct tm time_date;
	
	time_date.tm_year = MyRTC_Time[0] - 1900;
	time_date.tm_mon = MyRTC_Time[1] - 1;
	time_date.tm_mday = MyRTC_Time[2];
	time_date.tm_hour = MyRTC_Time[3];
	time_date.tm_min = MyRTC_Time[4];
	time_date.tm_sec = MyRTC_Time[5];
	
	time_cnt = mktime(&time_date) - 8 * 60 * 60;
	
	RTC_SetCounter(time_cnt); //设置CNT寄存器的值
	RTC_WaitForLastTask();
}

RTC初始化函数,32.768KHZ晶振

c 复制代码
void MyRTC_Init(void)
{
	RCC_APB1PeriphClockCmd(RCC_APB1Periph_PWR, ENABLE);//时钟初始化
	RCC_APB1PeriphClockCmd(RCC_APB1Periph_BKP, ENABLE);//时钟初始化
	PWR_BackupAccessCmd(ENABLE);
	if (BKP_ReadBackupRegister(BKP_DR1) != 0xA5A5)//如果系统完全断电才需初始化
	{
		RCC_LSEConfig(RCC_LSE_ON);//选择LSE的时钟
		while (RCC_GetFlagStatus(RCC_FLAG_LSERDY) != SET);
		
		RCC_RTCCLKConfig(RCC_RTCCLKSource_LSE);
		RCC_RTCCLKCmd(ENABLE);
		//为了防止时钟不同步,必须写入以下这俩条
		RTC_WaitForSynchro(); //查询RSF标志位
		RTC_WaitForLastTask(); //查询RTOFF标志位
		
		RTC_SetPrescaler(32768 - 1);
		RTC_WaitForLastTask();
		
		MyRTC_SetTime();
		
		BKP_WriteBackupRegister(BKP_DR1, 0xA5A5);//设置BKP的值
	}
	else
	{
		RTC_WaitForSynchro();
		RTC_WaitForLastTask();
	}
}
时钟旁路选择

RCC_LSEConfig可以选择Bypass,旁路时钟信号,这意味着可以外部生成电平信号作为时钟信号,而这个信号的引脚名称是OSE32_IN

相关推荐
LCG元21 分钟前
STM32实战:基于uC/OS-III的STM32移植与多任务应用
stm32·单片机·嵌入式硬件
今日待办1 小时前
【CEM5881-M11雷达模块】使用开发指南
stm32·雷达模块·cem5881-m11
iCxhust1 小时前
如何在汇编中修改CS:IP
汇编·单片机·嵌入式硬件·51单片机·微机原理
Deitymoon1 小时前
STM32——433M无线遥控灯
stm32·单片机·嵌入式硬件
XD7429716362 小时前
001. MSP430G2553 入门总述:从零开始学习这颗单片机
单片机·嵌入式硬件·学习·嵌入式·msp430g2553
阿哟阿哟2 小时前
立创3D模型快速下载
笔记·单片机·嵌入式硬件
三佛科技-134163842122 小时前
FT62F0GCA-LRB智能温控仪上的应用优势分析
单片机·嵌入式硬件·物联网·智能家居·pcb工艺
国产芯片设计2 小时前
小家电驱动开发实战:远乐YL1628在电饭煲显示面板的应用与调试
单片机·嵌入式硬件·mcu·51单片机·硬件工程
Wallace Zhang2 小时前
SimpleFOC源码学习09(v2.3.2) - 磁编码器MagneticSensorSPI.cpp与MagneticSensorSPI.h
驱动开发·stm32·simplefoc·foc电机控制
LCMICRO-133108477462 小时前
长芯微LD1871完全P2P替代AD1871,是一款立体声音频ADC
单片机·嵌入式硬件·fpga开发·音视频·硬件工程·dsp开发·音频adc