STM32的RTC学习笔记

STM32的RTC学习笔记

Mcu:STM32F103RBT6

1、RTC简介

RTC(Real Time Clock)实时时钟,是STM32片内的一个外设,这个外设使用起来跟普通定时器有一点区别,他是独立的一个定时器,并且能产生两个中断,秒中断和闹钟中断,他的时钟源可以由外部或内部驱动,由使用者选择,一些教程说RTC使用内部低速时钟(LSI)的时钟频率不准,可能跑久了以后就会出现误差。

2、RTC配置流程

1、使能RTC外设时钟
RCC_APB1PeriphClockCmd(RCC_APB1Periph_PWR,ENABLE);//RTC时钟使能(电源)
RCC_APB1PeriphClockCmd(RCC_APB1Periph_BKP,ENABLE);//RTC时钟使能(备份)
2、使能备份寄存器访问
PWR_BackupAccessCmd(ENABLE);//使能备份寄存器访问

开启后才能对备份寄存器进行访问,后期可以讲数据写进备份寄存器里,以防掉电数据丢失。

3、初始化备份寄存器
BKP_DeInit();//初始化备份配置,即复位备份区域
4、时钟源选择与使能
RCC_LSICmd(ENABLE);//使能内部低速时钟

while(RCC_GetFlagStatus(RCC_FLAG_LSIRDY) == 0 );//内部低速时钟是否已开启

RCC_RTCCLKConfig(RCC_RTCCLKSource_LSI);//配置RTC时钟为内部低速时钟
RCC_RTCCLKCmd(ENABLE);//使能RTC时钟

因为开发板原因,我用的是内部低速时钟,时钟频率为40K,先使能低速时钟源,等待使能完毕,然后再配置它为RTC的时钟源。

5、写RTC寄存器
RTC_WaitForSynchro();//等待寄存器校准
RTC_WaitForLastTask();//等待RTC寄存器写入完成(每次向RTC寄存器写入后都要调用这个函数)

RTC_ITConfig(RTC_IT_SEC,ENABLE);
RTC_WaitForLastTask();//等待RTC寄存器写入完成(每次向RTC寄存器写入后都要调用这个函数)
Rtc_Nvic_Config();

RTC_SetPrescaler(39999);//设置预分频系数
RTC_WaitForLastTask();//等待RTC寄存器写入完成(每次向RTC寄存器写入后都要调用这个函数)

RTC_SetCounter(hour*</
  • 2
    点赞
  • 2
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值