#STM32学习#RTC设置与低功耗(1)

 

基于L476RGTx的开发过程:

 

1、关于RTC的配置:

1.1、首先,我们要保证创建的工程正确的配置了时钟LSE。

#STM32学习#RTC设置与低功耗(1)_第1张图片

 

在stm32 cubemx自动生成的代码中有如下体现:

 

#STM32学习#RTC设置与低功耗(1)_第2张图片

1.2、RTC时钟分频设置

 

时钟源

 

AsynchPrediv 

 

SynchPrediv 

 

得到

 

HSE_RTC =1MHz

 

124

 

7999

 

1Hz

 

LSE=32.768kHz

 

127

 

255

 

1Hz

 

LSI=32kHz

 

127

 

249

 

1Hz

 

LSI=37Khz

 

124

 

295

 

1Hz

 

//由外部32.768KHz得到1Hz的RTC

hrtc.Init.AsynchPrediv = 127; //异步预分频值 

hrtc.Init.SynchPrediv = 255; //同步预分频值

1.3、RTC输入时间格式设置

 

#define RTC_FORMAT_BIN      0x00000000u //(0~60)显然使用此格式

 

#define RTC_FORMAT_BCD      0x00000001u//(0~90)

 

由BCD码的表示方法可知关系:BIN = BCD/10*16+BCD%10

 

如果RTC输入时间格式为BCD,而在读取时间的时候默认使用的却是BIN,则会导致出现 时分秒跳跃增加最大时间来到了89。如下图所示。

 

#STM32学习#RTC设置与低功耗(1)_第3张图片

1.4、设置闹钟屏蔽时,屏蔽日期小时分钟只匹配秒

 

sAlarm.AlarmMask = RTC_ALARMMASK_DATEWEEKDAY|RTC_ALARMMASK_HOURS|RTC_ALARMMASK_MINUTES;

 

sAlarm.AlarmDateWeekDaySel = RTC_ALARMDATEWEEKDAYSEL_DATE;

 

这样的设置,可以达到每分钟一次闹钟中断。

 

1.5、设置唤醒中断(此函数设置完之后,不能进入wakeup中断服务函数,正在查问题)

 

HAL_RTCEx_SetWakeUpTimer_IT(&hrtc, 5, RTC_WAKEUPCLOCK_RTCCLK_DIV16) ;

 

 

 

2、关于低功耗

 

1、睡眠模式:CPU时钟关闭,所有外围设备,包括Cortex∈-M4核心外围设备,如NVIC、SysTick等可以运行,在中断或事件发生时唤醒CPU。

请参阅第5.3.4节:睡眠模式。

 

 

 

2、低功耗运行模式:当系统时钟频率降低到2 MHz以下时,实现该模式。代码是从SRAM或闪存执行的。

 

 

 

3、低功耗睡眠模式:该模式是从低功耗运行模式进入的。

 

 

 

4、Stop0,stop1,stop2种模式:SRAM1、SRAM2和所有寄存器内容被保留。在VCORE域中的所有时钟都被停止,PLL、MSI、HSI16和HSE被禁用。

LSI和LSE可以保持运行。

 

 

 

RTC可以保持活动(停止模式+RTC,停止模式无RTC)。具有唤醒能力的一些外围设备可以在停止模式期间使HSI16 RC能够检测它们的唤醒状态。

 

停止2模式下,大多数VCORE域被放置在较低的泄漏模式中。

 

停止1提供最大数量的活动外设和唤醒源,比停止2更短的唤醒时间但是更高的消耗。

 

停止0模式下,主调节器保持开启,这允许最快的唤醒时间,但具有更高的消耗。有源外设和唤醒源与停止1模式相同。

 

当从停止0、停止1、停止2模式退出时,根据软件配置,系统时钟可以是多达48MHz的MSI或HSI16。

 

 

 

5、待机模式:VCORE域断电。然而,当在PWR_CR3寄存器中设置位RRS时,可以保留SRAM2内容:

 

–具有SRAM2保留的待机模式。在这种情况下,SRAM2由低功率调节器提供。

 

- 待机模式时,在RWRYCR3寄存器中清除位RRS。在这种情况下,主调节器和低功率调节器断电。

 

 

 

在VCORE域中的所有时钟都被停止,PLL、MSI、HSI16和HSE被禁用。

 

LSI和LSE可以保持运行。

 

RTC可以保持活动(待机模式与RTC,待机模式,没有RTC)。

 

系统时钟,当退出待机模式,是MSI从1 MHz至8兆赫。请参阅第5.3.9节:待机模式。

 

 

 

6、关闭模式:VCORE域断电。VCORE域中的所有时钟都被停止,PLL、MSI、HSI16、LSI和HSE被禁用。LSE可以继续运行。

系统时钟,当退出关机模式,是MSI在4兆赫。在这种模式下,电源电压监视被禁用,并且在电源电压下降的情况下不能保证产品的行为。

请参阅第5.3.10节:关机模式。

 

 

 

7、此外,运行模式下的功耗可以通过以下方法之一来降低:

 

·降低系统时钟

 

·在未使用时将时钟选通到APB和AHB外围设备。

 

 

未完成,暂留这些内容,以后补充。。。

 

 

 

 

 

 

 

 

 

你可能感兴趣的:(STM32)