STM32F103---标准库函数之驱动RTC

要想驱动RTC很简单,查看stm32f10x参考手册找到以下图片内容,就有思路了。

经过参考手册介绍

LSE晶体是一个32.768kHz的低速外部晶体或陶瓷谐振器。它为实时时钟或者其他定时功能提供
一个低功耗且精确的时钟源。

我们选用LSE时钟源。

根据以上图片作者的思路是:

    1.首先使能对应位 进行访问RTC

    2.选择对应时钟源

    3.配置RTC

   4 .选择中断

参考如下图便可以写代码了。

最后得出代码 便可驱动RTC(代码有注释):

void rtc_init(void)
{
	NVIC_InitTypeDef NVIC_InitStruct;
	
	RCC_APB1PeriphClockCmd(RCC_APB1Periph_BKP,ENABLE);  //使能BKPEN位
	RCC_APB1PeriphClockCmd(RCC_APB1Periph_PWR,ENABLE);  //使能PWREN位
	PWR_BackupAccessCmd(ENABLE); //使能PWR_CR的DBP位  
	
	RCC_LSEConfig(RCC_LSE_ON); //配置LSE时钟源开
	RCC_RTCCLKConfig(RCC_RTCCLKSource_LSE); //RTCCLK时钟源配置为LSE
	RCC_RTCCLKCmd(ENABLE); //使能RTCCLK配置生效
	
	RTC_WaitForLastTask();  //等待RTOFF位为1
	RTC_EnterConfigMode(); //进入配置模式
	
	RTC_WaitForLastTask(); //根据配置RTC寄存器得 每次写RTC的寄存器都要等待RTOFF位为1
	RTC_SetCounter(1672502392); //RTC从这个数开始计时 这是时间戳 可以上网查时间戳转换
	
	RTC_WaitForLastTask(); //再次等待写入完成
	RTC_SetPrescaler(0x7fff); //预分频设定为0x7fff = 32.767 LSE为32.768Khz分频后约得 1KHZ
	
	RTC_WaitForLastTask(); //再次等待写入完成
	RTC_ITConfig(RTC_IT_SEC,ENABLE);//RTC中断配置,让秒中断使能
	
	RTC_WaitForLastTask();//再次等待写入完成
	RTC_ExitConfigMode(); //离开配置模式
	
	RTC_WaitForLastTask();//再次等待写入完成
	
	NVIC_InitStruct.NVIC_IRQChannel = RTC_IRQn; //NVIC是总中断配置 选择RTC这个中断通道
	NVIC_InitStruct.NVIC_IRQChannelCmd = ENABLE; //中断使能
	NVIC_InitStruct.NVIC_IRQChannelPreemptionPriority = 2; //中断优先级2
	NVIC_InitStruct.NVIC_IRQChannelSubPriority = 3; //同等优先级下 这个中断优先级3
	
	NVIC_Init(&NVIC_InitStruct);  //让上面配置生效
}

 -------------------------------------------------虚线为止已经驱动好RTC了---------------------------------------

下面读取RTC里面的值:

         

/*
函数功能:RTC读取
函数参数:无
函数返回值:无
函数描述:无
*/
void Rtc_Read(void)
{
	RTC_WaitForSynchro(); //软件等待RTC_CRL中的RSF位置1
	TIME = RTC_GetCounter();//正式读取
	timeinfo = localtime(&TIME); //用time.h头文件里面的函数进行 数据处理
}

------------------------读取内容完毕--------------------------------------------------------------------------

读内容说明 

        在主函数文件里面定义了如下变量 

                  uint32_t TIME;
                  struct tm* timeinfo;

 读取到的内容 经过数据处理后 可用 结构体指针 取得想要的年月日时分秒。

图里面的内容不是定义的 是time.h文件自带的 。

觉得对你有点帮助的朋友麻烦点点赞,鼓励一下!谢谢 亲 们

猜你喜欢

转载自blog.csdn.net/longjintao1/article/details/124530740