STM8L RTC总结(1)

发布者:czl55555最新更新时间:2020-02-25 来源: eefocus关键字:STM8L  RTC 手机看文章 扫描二维码
随时随地手机看文章

介绍

电池在满足MCU最小供电状态下,无论MCU是运行、低功耗或重启状态,RTC一直处于工作状态。 


主要特性如下:


日历功能

周期唤醒

事件触发

脉冲输出

时钟源


RTC时钟源可选HSE,LSE,HSI或LSI。 

为确保RTC精确工作,要求系统时钟(SYSCLK)必须等于或大于4*RTCCLK值。如果系统时钟(SYSCLK)为LSE或LSI,则RTC时钟必须等于系统时钟(SYSCLK),并且禁用RTC同步机制(置位RTC_CR1寄存器RATIO位)。


配置RTC时钟源

配置RTC时钟源为LSE,1分频,即32768Hz。 

1. 等待CLK_CRTCR:RTCSWBSY位复位,然后设置CLK_CRTCR值为0x10; 

2. 等待CLK_ECKCR:LSERDY位置位,标识LSE时钟源已稳定可用; 

3. 等待CLK_ECKCR:LSEON位置位,标识LSE时钟源已启用。


配置ck_spre时钟

ck_spre时钟,即1Hz时钟。 

1. 设置7位异步预分频,RTC_APREG:PREDIVA,默认127; 

2. 设置13(Medium)或15位同步预分频,RTC_SPRERx:PREDIV_S,默认255。


fCK_SPRE=fRTCCLK(PREDIV_S+1)(PREDIV_A+1)fCK_SPRE=fRTCCLK(PREDIV_S+1)(PREDIV_A+1)

ck_spre时钟可用于日历和定时唤醒时钟。


日历功能

日历可从Shadow寄存器读取,也可直接读取。


RTC_DR3 读取年

RTC_DR2 读取月

RTC_DR1 读取日

RTC_TR3 读取时

RTC_TR2 读取分

RTC_TR1 读取秒

RTC_SSRx 读取毫秒

Shadow寄存器读取【默认】 


优点:可确保读取年、月、日,时、分、秒一致性; 

缺点:由于MCU在停止状态(Halt)时不更新Shadow寄存器,唤醒后需要等待一个RTCCLK后,才能读取正确值。


直接读取【置位RTC_CR1中BYPSHAD】 

优点:MCU从停止状态(Halt)唤醒后,可立即读取日历值; 

缺点:按序读取年、月、日,时、分、秒值,可能存在读取到的值不一致,因此需要连续读取两次,若两次读取值相同,才认为读取成功。


周期唤醒

周期唤醒功能由一个可扩展到17位的下行计数器实现。 

两种时钟可选:


RTCCLK,预分频2,4,8或16。如果RTCCLK为LSE,即32768Hz,则可配置唤醒周期为(0+1)(100000032768/2)us(0+1)(100000032768/2)us ~ (0xFFFF+1)(100000032768/16)us(0xFFFF+1)(100000032768/16)us

ck_spre, 1Hz时钟,则可配置唤醒周期为(0+1)s(0+1)s ~ (0x1FFFF+1)s(0x1FFFF+1)s

若配置周期唤醒中断(置位RTC_CR2中WUTIE位),则该中断会使MCU退出低功耗状态,进入运行状态。

关键字:STM8L  RTC 引用地址:STM8L RTC总结(1)

上一篇:STM8 HSI与HSE手动切换时钟源
下一篇:STM8L时钟管理总结

推荐阅读最新更新时间:2024-11-09 22:42

STM32 RTC时钟源LSE
一开始,所有实验都是在神舟板上去完成,根本就没有发现RTC的问题。直到我们自己画板来后调试时,才发现STM32 RTC的外部时钟源存在问题。 这也算是STM32的一个鸡肋,对于LSE外部晶振太过于苛刻,手册上要求使用6pf,这个规格的晶振市场上太少,鱼龙混杂,中招的高手菜鸟不在少数。我们自己的板也是如此,几经波折,反反复复尝试使用不同的规格的晶振,替换外部的电容,电阻都没有能让这个32.768K的LSE起振。但是又需要有RTC来提供时间,考虑的方法主要有2种,第一采用外部RTC时钟芯片,如DS1302。第二是使用内部其它的时钟源来提供RTC时钟。毫无疑问,目前板已经制好,添加时钟芯片肯定造成板上布局更改,还得重新打板,这里采用了第二
[单片机]
STM32 <font color='red'>RTC</font>时钟源LSE
STM32F4DiscoveryRTC
STM32F4DiscoveryRTC调试手记 实现功能:配置RTC实现计时功能,并通过唤醒中断输出当前时间。 一、硬件改动 本次调试使用32768Hz晶振,而STM32F4Discovery上并未焊接该晶振,于是硬件需要作出几个改动: 1. 2013-8-20 17:05 上传 下载附件 (19.52 KB) 焊接晶振X3 32768Hz(负载电容为6pF)C16、C27 6pF 2. 因VBAT直接接到VDD上了,而RTC需要电池供电支持,因而需要拆掉R26,并在VBAT那个焊盘接电池正极 硬件改动效果图: 二、所使用的库函数 在本次实验中,主要使用了stm32
[单片机]
【STM32】RTC实时时钟,步骤超细详解,一文看懂RTC
什么是RTC RTC (Real Time Clock):实时时钟 RTC是个独立的定时器。RTC模块拥有一个连续计数的计数器,在相应的软件配置下,可以提供时钟日历的功能。修改计数器的值可以重新设置当前时间和日期 RTC还包含用于管理低功耗模式的自动唤醒单元。 在断电情况下 RTC仍可以独立运行 只要芯片的备用电源一直供电,RTC上的时间会一直走。 RTC实质是一个掉电后还继续运行的定时器,从定时器的角度来看,相对于通用定时器TIM外设,它的功能十分简单,只有计时功能(也可以触发中断)。但其高级指出也就在于掉电之后还可以正常运行。 两个 32 位寄存器包含二进码十进数格式 (BCD) 的秒、分钟、小时( 12 或 24 小
[单片机]
【STM32】<font color='red'>RTC</font>实时时钟,步骤超细详解,一文看懂<font color='red'>RTC</font>
STM32F4 RTC日历和Count转换
虽然F4硬件自带了日历功能,可以直接读年月日,但有些场合使用计数值存储还是更方便。 这里根据正点原子F1中RTC例程的年月日转换,写了适用于F4的RTC日历转计数值。 两个函数的声明: uint32_t RTC_DataToCnt(RTC_TimeTypeDef RTC_TimeStruct,RTC_DateTypeDef RTC_DateStruct); void RTC_CntToData(uint32_t RTC_Count,RTC_TimeTypeDef* RTC_TimeStruct,RTC_DateTypeDef* RTC_DateStruct); 函数实现内容: const u8 mon_tabl
[单片机]
STM32F4 <font color='red'>RTC</font>日历和Count转换
记一次stm8l程序跑飞
项目使用stm8l051f3做主控,CC2500做数据接收,不发送。 跑飞的现象就是,刚开始能运行,经过一段未知长度的时间,有可能是3分钟,有可能是30分钟,指示灯不再闪烁,中断按键单片机无反应。 接入调试器发现跑到了一个非常大的地址,已经超过了mcu的内部flash空间。可以确定是程序跑飞。 经验是: 程序跑飞,查条件语句是否都有做处理。 程序跑飞,查内存溢出。 查了好久,查出是内存溢出导致。 因为发送端发送的数据固定是32字节,所以在接收端只开辟了一个32字节的buffer去读取收到的数据。 /***************************************************
[单片机]
STM32F103ZET6 — RTC
简介 RTC 是Real Time Clock 的简称,意为实时时钟。即,提供类似于 PC 上的时间记录信息的功能。既然是实时时钟,则至少应该有秒、分、时等信息。也可以直观的把他理解成为一个计数器,一直累加。但又不同于 CPU 上电后的那些计数器,对于 RTC ,需要支持的是掉电后的继续计数(存在备用电源)。所谓掉电,是指电源Vpp断开的情况下,为了RTC外设掉电可以继续运行,必须给STM32芯片通过VBAT引脚街上锂电池.当主电源VDD有效时,由VDD给RTC外设供电.当VDD掉电后,由VBAT给RTC外设供电.无论由什么电源供电,RTC中的数据始终都保存在属于RTC的备份域中,如果主电源和VBA都掉电,那么备份域中保存的所有
[单片机]
STM8L TAB段式LCD液晶驱动程序
简介:STM8L152XX系列带有片上段式LCD驱动程序,这为低成本应用和高密度系统设计提供了保证,利用片上LCD驱动模块,可以有效的控制系统整体功耗,简化系统结构,从整体来说可靠性得到提高。此处不介绍LCD驱动模块的原理以及驱动时序,请参考STM8原版英文说明文档,已描述的很详细,以下介绍其寄存器的配置方法以及编程方法。 时钟,系统时钟同样用来产生LCD驱动时钟,通过时钟模块配置: CLK_PCKENR2|=S3; //LCD 使能LCD模块时钟 CLK_CRTCR=S7|S6|S5|S1; //RTC&LCD- FCLK/128 注意RTC和LCD是共同一路时钟 以上配置根据实际时钟进行调整,我在此处采用FCL
[单片机]
stm8l唤醒操作遇到问题
发指令休眠以后,外部IO终端唤醒cpu后代码跑飞。经查找主要是以下原因 a)关闭外设的时候一定要先操作关闭或是失能指令,再关闭外设时钟否则造成不可预测的影响。 b)由于代码对中断默认的优先级别,所以进中断处理之前先关闭中断,处理完成以后在开启中断。 c)休眠之前,将串口变成普通IO中断,用于唤醒CPU。
[单片机]
小广播
设计资源 培训 开发板 精华推荐

最新单片机文章
何立民专栏 单片机及嵌入式宝典

北京航空航天大学教授,20余年来致力于单片机与嵌入式系统推广工作。

换一换 更多 相关热搜器件
随便看看

 
EEWorld订阅号

 
EEWorld服务号

 
汽车开发圈

电子工程世界版权所有 京B2-20211791 京ICP备10001474号-1 电信业务审批[2006]字第258号函 京公网安备 11010802033920号 Copyright © 2005-2024 EEWORLD.com.cn, Inc. All rights reserved