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

基于L476RGTx的开发过程:

1、关于RTC的配置:

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

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

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。如下图所示。

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外围设备。

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

  • 0
    点赞
  • 7
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值