10、RTC实时时钟实验

本文详细介绍了STM32中RTC实时时钟的配置过程,包括开启电源和后备接口时钟,设置RTC分频寄存器RTC_PRLH与RTC_PRLL以实现精确到秒的计数。此外,还提供了计算平闰年、设置日期及获取时间总秒数的函数,以及根据总秒数推导当前日期和星期的方法。
摘要由CSDN通过智能技术生成

1、实时时钟(RTC)是STM32一个独立的定时器,可以提供日历功能;

2、想要对实时时钟进行配置,必须进行相关寄存器的操作,大体的流程包括:通过设置寄存器 RCC_APB1ENR 的 PWREN 和 BKPEN 位来打开电源和后备接口的时钟 及电源控

制寄存器(PWR_CR)的 DBP 位来使能对后备寄存器和 RTC 的访问。

3、RTC分频则用到RTC_PRLH与RTC_PRLL这两个寄存器,其中RTC_PRLH中只用用到0~3位,RTC_PRLL则用到16位,总共20位。外部的输入的时钟频率是32.768K

如果给这个寄存器转载32767,则可以实现一秒钟的计数频率,就可以用这个时钟来实现精确到秒的时钟。

4、几种确定年、月、日、闰年、平年的软件实现方法:

计算是平、闰年代码,闰年一年有366天,它的二月份有29天,平年一年只有365,它的二月份只有28天。口诀是四年一闰,百年不闰,四百年再闰。

其实现代码如下:

//判断是否是闰年函数
//月份   1  2  3  4  5  6  7  8  9  10 11 12
//闰年   31 29 31 30 31 30 31 31 30 31 30 31
//非闰年 31 28 31 30 31 30 31 31 30 31 30 31
//输入:年份
//输出:该年份是不是闰年.1,是.0,不是
u8 Is_Leap_Year(u16 year)
{  
if(year%4==0) //必须能被4整除

if(year%100==0) 

if(year%400==0)return 1;//如果以00结尾,还要能被400整除   
else return 0;   
}else return 1;   
}else return 0;
}    

设置日期及获取从1970年到设置时间总秒数:

//设置时钟
//把输入的时钟转换为秒钟
//以1970年1月1日为基准
//1970~2099年为合法年份
//返回值:0,成功;其他:错误代码.
//月份数据表  
u8 const table_week[12]={0,3,

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值