RTC_Configuration

Void RTC_Configuration(void)//

实时时钟的初始化配置

{

RCC_APB1PeriphClockCmd(RCC_APB1Periph_PWR

|

RCC_APB1Periph_BKP,ENABLE);

//

使能

APB1

外设

PWR

(电源控制寄存器)

BKP

(备份寄存器)时钟。

PWR_BackupAccessCmd(ENABLE);

//

允许访问

BKP

BKP_DeInit();

//

复位备份域。

#ifdef

RTCClockSource_LSI

RCC_LSICmd(ENABLE);

//

使能内部低速晶振。

While(RCC_GetFlagStatus(RCC_Flag_LSIRDY)==RESET)//

等待

LSI

准备好

{

}

RCC_RTCCLKConfig(RCC_RTCCLKSource_LSI);//

选择

LSI

RTC

时钟

#elif

define

RTCClockSource_LSI

RCC_LSEConfig(RCC_LSE_ON);

//LSE

晶振

ON

While(RCC_GetFlagStatus(RCC_Flag_LSERAY)==RESET)//

等待

LSE

准备好

{

}

RCC_RTCCLKConfig(RCC_RTCCLKSource_LSE);//

选择

LSE

RTC

时钟

#endif

RCC_RTCCLKCmd(ENABLE);

//

使能

RTC

时钟

#ifdef

RTC_ClockOutput_ENABLE

//

禁止

Tamper

引脚

BKP_TamperPinCmd(DISABLE);//

为了将

RTCCLK/64

Tamper

引脚上输出,

Tamper

功能必

须被禁止

BKP_RTCCalibrationClockOutputCmd(ENABLE);//

允许

RTC

时钟在

Tamper

上输出

#endif

RTC_WaitForSynchro();//

等待寄存器同步

RTC_WaitForLastTask();//

等待上次寄存器写操作完成

RTC_ITConfig(RTC_IT_SEC,ENABLE);//

允许

RTC

秒中断

RTC_WaitForLastTask();//

等待上次寄存器写操作完成

#ifdef RTC_ClockSource_LSI//

设置分频系数

RTC_SetPrescalor(31999);//RTC

周期

=RTCCLK/RTC_PR=(32.000KHz/(31999+1))

#elif define RTC_ClockSource_LSE

RTC_SetPrescaler(32767);// RTC

周期

=RTCCLK/RTC_PR=(32.768KHz/(32767+1))

#endif

RTC_WaitForLastTask();//

等待最近一次对

RTC

寄存器的写操作的完成。

}

RTC_Configuration,布布扣,bubuko.com

时间: 2024-10-15 09:26:09

RTC_Configuration的相关文章

STM32学习笔记10(实时时钟RTC)

对于单片机转ARM的同学来说,RTC可能比较少接触.提到实时时钟,更经常想到的是DS1302.当然,在STM32里,自己一个CPU已经足够,不需要DS1302. 实际上,RTC就只一个定时器而已,掉电之后所有信息都会丢失,因此我们需要找一个地方来存储这些信息,于是就找到了备份寄存器.因为它掉电后仍然可以通过纽扣电池供电,所以能时刻保存这些数据.我们在本期教程中将详细讲述RTC原理及例程,以引导大家顺利进入RTC的世界. 1.STM32的RTC模块 RTC模块之所以具有实时时钟功能,是因为它内部维

stm32——RTC实时时钟

stm32——RTC实时时钟 一.关于时间 2038年问题 在计算机应用上,2038年问题可能会导致某些软件在2038年无法正常工作.所有使用UNIX时间表示时间的程序都将将受其影响,因为它们以自1970年1月1日经过的秒数(忽略闰秒)来表示时间.这种时间表示法在类Unix(Unix-like)操作系统上是一个标准,并会影响以其C编程语言开发给其他大部份操作系统使用的软件. 在大部份的32位操作系统上,此“time_t”数据模式使用一个有正负号的32位元整数(signedint32)存储计算的秒