STM32L4实时时钟模块(RTC)介绍
- 格式:pdf
- 大小:310.83 KB
- 文档页数:25
2017年6月Doc ID 018624 Rev 1 [English Rev 5]1/45AN3371应用笔记在 STM32 F0、F2、F3、F4 和 L1 系列MCU 中使用硬件实时时钟(RTC )前言实时时钟 (RTC) 是记录当前时间的计算机时钟。
RTC 不仅应用于个人计算机、服务器和嵌入式系统,几乎所有需要准确计时的电子设备也都会使用。
支持 RTC 的微控制器可用于精密计时器、闹钟、手表、小型电子记事薄以及其它多种设备。
本应用笔记介绍超低功耗中等容量、超低功耗大容量、F0、F2和 F4 系列器件微控制器中嵌入式实时时钟 (RTC) 控制器的特性,以及将 RTC 用于日历、闹钟、定时唤醒单元、入侵检测、时间戳和校准应用时所需的配置步骤。
本应用笔记提供了含有配置信息的示例,有助于您快速准确地针对日历、闹钟、定时唤醒单元、入侵检测、时间戳和校准应用配置 RTC 。
注:所有示例和说明均基于 STM32L1xx 、STM32F0xx 、STM32F2xx 、STM32F4xx 和STM32F3xx 固件库,以及 STM32L1xx (RM0038)、STM32F0xx (RM0091)、STM32F2xx (RM0033)、STM32F4xx (RM0090)、STM32F37x (RM0313) 和 STM32F30x(RM0316) 的参考手册。
本文提到的STM32 指超低功耗中等容量、超低功耗大容量、F0、F2 和 F4 系列器件。
超低功耗中等 (ULPM) 容量器件包括 STM32L151xx 和 STM32L152xx 微控制器,Flash 容量在 64 KB 到 128 KB 之间。
超低功耗大 (ULPH) 容量器件包括 STM32L151xx 、STM32L152xx 和 STM32L162xx 微控制器,Flash 容量为 384 KB 。
F2 系列器件包括 STM32F205xx 、STM32F207xx 、STM32F215xx 和 STM32F217xx 微控制器。
STM32-RTC实时时钟-毫秒计时实现OS:Windows 64Development kit:MDK5.14IDE:UV4MCU:STM32F103C8T61、RTC时钟简介 STM32 的实时时钟(RTC)是⼀个独⽴的定时器,在相应软件配置下,可提供时钟⽇历的功能。
详细资料请参考ALIENTEK的官⽅⽂档——《STM32F1开发指南(精英版-库函数版)》,以下为博主摘录要点:RTC 模块和时钟配置系统(RCC_BDCR 寄存器)在后备区域,系统复位后,会⾃动禁⽌访问后备寄存器和 RTC ,所以在要设置时间之前,先要取消备份区域(BKP)的写保护RTC 内核完全独⽴于 RTC APB1 接⼝,⽽软件是通过 APB1 接⼝访问 RTC 的预分频值、计数器值和闹钟值,因此需要等待时钟同步,寄存器同步标志位(RSF)会硬件置1RTC相关寄存器包括:控制寄存器(CRH、CRL)、预分频装载寄存器(PRLH、PRLL)、预分频器余数寄存器(DIVH、DIVL)、计数寄存器(CNTH、CNTL)、闹钟寄存器(ALRH、ALRL)STM32备份寄存器,存RTC校验值和⼀些重要参数,最⼤字节84,可由VBAT供电计数器时钟频率:RTCCLK频率/(预分频装载寄存器值+1)2、软硬件设计 由于RTC是STM32芯⽚⾃带的时钟资源,所以⾃主开发的时候只需要在设计时加上晶振电路和纽扣电池即可。
编程时在HARDWARE⽂件夹新建 rtc.c、rtc.h ⽂件。
3、时钟配置与函数编写 为了使⽤RTC时钟,需要进⾏配置和时间获取,基本上按照例程来写就可以了。
为避免零散,我将附上完整代码。
函数说明如下:rtc.c中需要编写的函数列表RTC_Init(void)配置时钟RTC_NVIC_Config(void)中断分组RTC_IRQHandler(void)秒中断处理RTC_Set(u16 syear,u8 smon,u8 sday,u8 hour,u8 min,u8 sec)设置时间RTC_Alarm_Set(u16 syear,u8 smon,u8 sday,u8 hour,u8 min,u8sec)闹钟设置RTC_Get(void)获取时钟RTC_Get_Week(u16 year,u8 month,u8 day)星期计算Is_Leap_Year(u16 year)闰年判断 事实上,以上函数并不都要,闹钟没有⽤到的话就不要,秒中断也可以不作处理,看项⽬需求。
stm32 rtc实时时钟STM32 RTC实时时钟一、介绍STM32是意法半导体公司(STMicroelectronics)推出的一系列32位ARM Cortex-M微控制器。
其中,RTC(Real-Time Clock)是STM32微控制器中的一个重要组件,用于实时时钟和日历功能。
本文将详细介绍STM32 RTC的实时时钟功能及其应用。
二、RTC概述RTC模块是一种独立的硬件模块,可以在微控制器断电时继续运行。
它提供了一个与时间和日期相关的计数器,通过时钟信号源来驱动计数器,从而实现实时时钟的功能。
RTC模块通常由一个独立的低功耗振荡器来提供时钟源。
STM32微控制器中的RTC模块支持多种工作模式,如年历模式、单位数字模式和二进制模式等。
三、RTC的主要功能1. 实时时钟:RTC模块可以提供精确的实时时钟,可以记录时间、日期和星期等信息。
2. 闹钟功能:RTC可以设置多个闹钟时间,并在闹钟时间到达时触发中断或其他操作。
3. 倒计时功能:RTC模块可以进行倒计时操作,并在倒计时结束时触发中断。
4. 调度功能:RTC可以设置预定的时间点,并在该时间点触发中断。
5. 报警功能:RTC可以设置报警功能,当发生特定事件时触发中断或其他操作。
四、配置RTC模块在使用STM32微控制器的RTC功能之前,需要进行一些配置。
首先,需要选择合适的时钟源。
通常,RTC模块使用低功耗振荡器作为时钟源。
其次,需要配置RTC的预分频器和计数器,以实现所需的时间精度。
还需配置中断和/或事件触发条件,以便在特定事件发生时触发中断或其他操作。
五、RTC的中断与事件RTC模块可以生成多个中断和事件,以满足应用的需求。
常见的中断和事件有:1. 秒中断:每当计数器的秒字段更新时触发中断。
2. 分钟中断:每当计数器的分钟字段更新时触发中断。
3. 小时中断:每当计数器的小时字段更新时触发中断。
4. 日期中断:每当计数器的日期字段更新时触发中断。
stm32——RTC实时时钟一、关于时间2038年问题在计算机应用上,2038年问题可能会导致某些软件在2038年无法正常工作。
所有使用UNIX时间表示时间的程序都将将受其影响,因为它们以自1970年1月1日经过的秒数(忽略闰秒)来表示时间。
这种时间表示法在类Unix(Unix-like)操作系统上是一个标准,并会影响以其C编程语言开发给其他大部份操作系统使用的软件。
在大部份的32位操作系统上,此“time_t”数据模式使用一个有正负号的32位元整数(signedint32)存储计算的秒数。
也就是说最大可以计数的秒数为 2^31次方可以算得:2^31/3600/24/365 ≈ 68年所以依照此“time_t”标准,在此格式能被表示的最后时间是2038年1月19日03:14:07,星期二(UTC)。
超过此一瞬间,时间将会被掩盖(wrap around)且在内部被表示为一个负数,并造成程序无法工作,因为它们无法将此时间识别为2038年,而可能会依个别实作而跳回1970年或1901年。
对于PC机来说,时间开始于1980年1月1日,并以无正负符号的32位整数的形式按秒递增,这与UNIX时间非常类似。
可以算得:2^32/3600/24/365 ≈ 136年到2116年,这个整数将溢出。
Windows NT使用64位整数来计时。
但是,它使用100纳秒作为增量单位,且时间开始于1601年1月1日,所以NT将遇到2184年问题。
苹果公司声明,Mac在29,940年之前不会出现时间问题!二、RTC使用说明"RTC"是Real Time Clock 的简称,意为实时时钟。
stm32提供了一个秒中断源和一个闹钟中断源,修改计数器的值可以重新设置系统当前的时间和日期。
RTC模块之所以具有实时时钟功能,是因为它内部维持了一个独立的定时器,通过配置,可以让它准确地每秒钟中断一次。
但实际上,RTC就只是一个定时器而已,掉电之后所有信息都会丢失,因此我们需要找一个地方来存储这些信息,于是就找到了备份寄存器。
22 实时时钟(RTC)22.1 简介实时时钟是一个独立的BCD定时/计数器。
可以提供一个时钟日历、两个可编程的闹钟中断以及一个有中断能力的周期性可编程的唤醒标志,RTC同时包括一个自动唤醒单元来管理低功耗模式。
RTC有两个32位寄存器,其中包括以BCD码表示的秒、分、时(12或24小时制)、日(Day of week)、日期(day of mouth)以及年。
亚秒(sub-seconds)值也可以用BCD码表示。
自动执行28、29(闰年)、30、31天的补偿以及夏令时的补偿。
附加的32位寄存器包含可编程的闹铃亚秒、秒、分、小时、日(day of week)可日期(day of mouth).数字校准器可以补偿任何晶振带来的偏差。
上电复位后所有的RTC寄存器都被保护,以防止可能的误写访问。
不管设备处于什么状态(运行模式(Run mode),低功耗模式(Low power mode)或者正在复位(under reset)),只要供电在工作范围内,RTC就不会停止。
22.2 RTC的主要特性RTC单元的主要特性如下:·拥有亚秒、秒、分、小时、星期、日期,月和年的日历。
·软件编程的夏令补偿。
·两个有中断功能的可编程闹钟。
闹钟可以通过任何日历的组合来触发。
·自动唤醒单元产生一个周期标志来触发一个自动唤醒中断。
·参考时钟选择:可以选择一个更精确的源秒时候来确保日历的精确度。
·使用亚秒切换特性通过一个外部时钟来达到精确的同步。
·可屏蔽中断/事件:- 闹钟A- 闹钟B- 唤醒中断- 时间戳- 侵入检测·数字校验电路(周期计数校正)- 5 ppm的精度- 0.95ppm的精度,获得一个几秒种的校准窗口·可保存事件的时间戳功能(一个事件)·侵入事件- 两个可配置滤波器和侵入上拉的侵入事件。
·20个后备寄存器(80个字节).当一个选择的侵入检测事件发生时后备寄存器被复位。
STM32L4如何用闹钟唤醒待机模式STM32L4微控制器是一款低功耗型的微控制器,具有多种低功耗模式,包括待机模式。
待机模式是一种非常低功耗的模式,减少了系统的功耗和电池的消耗。
在待机模式下,微控制器处于最低功耗状态,只有少数外设处于工作状态。
为了实现在待机模式下使用闹钟唤醒,需要使用RTC(实时时钟)和唤醒时钟。
以下是在STM32L4微控制器上使用闹钟唤醒待机模式的步骤:第一步:配置RTCRTC是一个计时器和日历,可以配置为以低功耗模式运行,以实现在待机模式下仍然运行。
需要配置RTC的时钟源和时钟预分频器,以及闹钟的时间和日期。
可以使用STM32CubeMX工具来生成初始化代码,并进行配置。
第二步:配置唤醒时钟唤醒时钟是唤醒待机模式的时钟源,可以选择RTC时钟或者外部时钟。
需要配置唤醒时钟源的时钟频率和预分频器。
第三步:配置RTC闹钟唤醒RTC闹钟唤醒是通过比较RTC计数器的值和闹钟的时间来实现的。
需要设置闹钟的时间和日期,并使能RTC的闹钟中断。
可以使用RTC中断处理函数来处理闹钟中断。
第四步:配置待机模式需要将微控制器设置为待机模式,并选择所需的待机模式。
可以选择从WFI或WFE指令进入待机模式,然后在唤醒时钟中断发生时唤醒。
第五步:进入待机模式通过设置待机模式位,可以将微控制器设置为待机模式。
可以在主循环中或者其他适当的位置调用待机模式函数,以便在满足一定条件时进入待机模式。
例如,在任何其他可能导致系统空闲的地方,可以插入检查唤醒条件的代码,并在满足条件时调用待机模式函数。
第六步:处理唤醒中断当RTC闹钟的时间和日期与RTC计数器的值匹配时,将会发生唤醒中断,并从待机模式中唤醒。
可以在RTC中断处理函数中处理唤醒中断,例如重新配置RTC闹钟或恢复其他外设。
通过以上步骤,就可以实现在待机模式下使用RTC闹钟唤醒STM32L4微控制器。
这样可以大大降低系统的功耗,并在指定的时间唤醒系统进行相应的操作。
STM32单片机RTC时钟的使用方法及步骤以下是使用STM32单片机的RTC时钟的步骤:1.初始化RTC模块:首先,需要在RCC寄存器中使能RTC和LSE(Low-Speed External)晶振模块。
然后,配置RTC的时钟源和预分频器,选择合适的时钟频率。
2.配置RTC时间和日期:通过设置RTC的寄存器来配置当前时间和日期。
需要设置秒、分钟、小时、星期、日期、月份和年份,确保其具有正确的值。
3.启动RTC时钟:设置RTC的控制寄存器,使其开始工作。
可以选择启用或禁用闹钟功能,设置闹钟的时间和日期。
4.读取RTC数据:可以随时读取RTC的时间和日期数据。
读取数据后,可以进行各种计算和处理,如计算两个时间之间的差异、比较时间等。
5.处理RTC中断:可以设置RTC中断来触发一些操作,如闹钟触发时执行一些任务。
需要配置NVIC(Nested Vector Interrupt Controller)中断向量表,使能相应的中断。
6.备份和恢复RTC数据:RTC模块提供了备份寄存器,可以用来存储额外的信息。
可以使用一些特殊的寄存器,如BKP (Backup)寄存器或CPU的系统寄存器来备份和恢复数据。
7.断电维持能力:RTC模块的一个关键特性是其断电维持能力。
即使在断电情况下,RTC模块中的数据仍然能够保持。
可以通过电池供电电路来提供必要的电力。
8.节能模式:可以利用RTC模块的节能模式来降低功耗。
可以选择性地关闭RTC模块的不需要的功能,以减少功耗。
需要注意的是,具体的步骤可能会因芯片型号和开发工具的不同而有所差异。
因此,在使用STM32单片机的RTC时钟之前,需查阅相关的技术文档和参考手册,以了解具体操作步骤和寄存器配置。
以上是使用STM32单片机的RTC时钟的基本步骤。
在实际应用中,可以根据具体需求对RTC进行更多的配置和使用。
1 课程设计内容本文将利用ALIENTEK 2.8寸TFTLCD模块来显示日期时间,实现一个简单的时钟。
2 STM32芯片简介2006年ARM公司推出了基于ARMv7架构的Cortex系列的标准体系结构,以满足各种技术的不同性能要求,包含A、R、M三个分工明确的系列[1]。
其中,A系列面向复杂的尖端应用程序,用于运行开放式的复杂操作系统;R系列适合实时系统;M系列则专门针对低成本的微控制领域。
Cortex-M3是首款基于ARMv7-M体系结构的32位标准处理器,具有低功耗、少门数、短中断延迟、低调试成本等众多优点。
它是专门为在微控制系统、汽车车身系统、工业控制系统和无线网络等对功耗和成本敏感的嵌入式应用领域实现高系统性能而设计的,它大大简化了编程的复杂性,集高性能、低功耗、低成本于一体[2]。
半导体制造厂商意法半导体ST公司是ARM公司Cortex-M3内核开发项目一个主要合作方,2007年6月11日ST公司率先推出了基于Cortex-M3内核的STM32系列MCU。
本章将简要介绍STM32系列处理器的分类、内部结构及特点,并对本设计中重点应用的通用定时器做进一步分析。
2.1 STM32 RTC时钟简介STM32 的实时时钟(RTC)是一个独立的定时器。
STM32 的 RTC 模块拥有一组连续计数的计数器,在相应软件配置下,可提供时钟日历的功能。
修改计数器的值可以重新设置系统当前的时间和日期。
RTC 模块和时钟配置系统(RCC_BDCR 寄存器)是在后备区域,即在系统复位或从待机模式唤醒后 RTC 的设置和时间维持不变。
但是在系统复位后,会自动禁止访问后备寄存器和 RTC,以防止对后备区域(BKP)的意外写操作。
所以在要设置时间之前,先要取消备份区域(BKP)写保护。
RTC 的简化框图,如图 20.1.1 所示:图 20.1.1 RTC 框图RTC 由两个主要部分组成(参见图 20.1.1),第一部分(APB1 接口)用来和 APB1 总线相连。
RTC实时时钟说明书
一:工作原理
STM32芯片中内置RTC时钟,当对RTC进行初始化后,便可以像电子钟一样运行,通过读取RTC对应的寄存器,可以获知年月日、时分秒信息。
有关RTC的说明可参考《STM32中文参考资料》。
二:实验现象及操作
程序下载后,有以下两种情况。
●如果芯片第一次初始化RTC,则程序将写入HEX生成的时间信息到芯片RTC时钟中,
然后读出时钟信息。
通过数码管显示。
●如果不是第一次初始化RTC,则程序将读取RTC对应寄存器的值,以时间信息显示
在数码管上。
如果开发板上有放入3V的小电池,则即使掉电,RTC时钟依然在走。
程序刚下载,数码管显示的数据为时-分-秒。
K1键,则显示年月日,左边四位为年份,最右边两位为日期。
其它两位为月份。
K2键,数码管继续显示时-分-秒。
stm32 rtc用法STM32是一款功能强大的微控制器系列,RTC(Real Time Clock)是其中一个重要的功能模块。
RTC模块为嵌入式设备提供了高精度的实时时钟功能,能够在断电后依然保持时间的准确性。
本篇文章将详细介绍STM32 RTC的使用方法,一步一步回答相关问题。
第一步:使用前的准备在开始使用STM32 RTC之前,需要对RTC模块进行一些准备工作。
首先,在Keil或者其他集成开发环境(IDE)中,需要将RTC作为外设来进行配置。
其次,需要对RTC外设的时钟进行配置,通常可以选择外部晶体振荡或者内部LSI振荡作为时钟源。
最后,还需要配置RTC的预分频器和计数器,以满足实际应用的需求。
第二步:初始化RTC模块在进行RTC模块的初始化之前,需要先对RTC外设进行使能。
通过启用RCC_AHB1ENR或RCC_APB1ENR寄存器中的RTCEN位,可以使能RTC外设。
接着,可以通过RCC_CSR寄存器中的备份域访问位(BDCR寄存器)来对RTC 模块进行初始化。
在初始化RTC模块时,可以设置时钟源、预分频器和计数器的初值,以及其他一些参数,如是否使能闹钟功能等。
第三步:设置RTC时间在RTC模块初始化完成后,可以通过写入RTC_TR和RTC_DR寄存器来设置RTC的时间。
其中,RTC_TR寄存器用于设置小时、分钟和秒钟的值,RTC_DR寄存器用于设置年、月和日期的值。
需要注意的是,写入RTC_TR和RTC_DR寄存器的时候,应该先禁用RTC写保护,然后再进行写操作。
完成时间设置后,可以重新启用RTC写保护。
第四步:读取RTC时间除了设置RTC时间外,还可以通过读取RTC_TR和RTC_DR寄存器来获取当前的RTC时间。
读取RTC时间的时候,同样需要先禁用RTC写保护,然后再进行读取操作。
完成读取后,需要重新启用RTC写保护。
第五步:使用闹钟功能RTC模块还支持闹钟功能,可以通过设置RTC_ALRMxR(x为1、2或3)寄存器来设置闹钟的时间和触发方式。
STM32单片机RTC时钟的使用方法及步骤
STM32RTC使用步骤:
打开PWR时钟和Backup区数据访问
若使用外部低速时钟(LSE),打开LSE并等待起振
选择和打开RTC时钟,等待时钟同步
配置时间格式,分频系数等
根据需要配置时钟,日期,闹钟,唤醒,输出,时间戳,备份寄存器等模块
根据需要配置和打开中断,其中
RTC Alarm ——EXTI line 17
RTC tamper and TImestamps——EXTI line 19
RTC wakeup——EXTI line 20
下面的代码配置日期,时间,当前时间设置为15年05月31日,星期日(7),15:50:40,打开闹钟A和唤醒中断,每一秒钟来一次中断,15:50:45秒产生闹钟中断,用串口打印相应的信息。
代码:
void RTC_Config(void)
{
RTC_TImeTypeDef RTC_TimeStructure;
RTC_DateTypeDef RTC_DateStructure;
RTC_InitTypeDef RTC_InitStructure;
RTC_AlarmTypeDef RTC_AlarmStructure;
RCC_APB1PeriphClockCmd(RCC_APB1Periph_PWR,ENABLE);
PWR_BackupAccessCmd(ENABLE);
RCC_BackupResetCmd(ENABLE);
RCC_BackupResetCmd(DISABLE);
RCC_LSEConfig(RCC_LSE_ON);。
STM32单片机RTC时钟的使用方法及步骤一、配置RTC模块时钟源RTC模块的时钟源可以选择外部低速晶振(LSE)或者低速内部时钟(LSI)。
通过以下步骤配置RTC时钟源:1.使能外部低速晶振(LSE)或者低速内部时钟(LSI)。
例如,如果使用外部低速晶振,则需要使能相应的GPIO端口,并配置为晶振模式。
2.配置RCC时钟控制寄存器(RCC_CR)和时钟配置寄存器(RCC_CSR)。
二、使能RTC模块时钟1.使能PWR模块时钟和备份寄存器访问。
RCC_APB1ENR,=(1<<28);RCC_APB1ENR,=(1<<27);2.校验并关闭RTC模块。
RCC->BDCR,=RCC_BDCR_RTCEN;PWR->CR,=PWR_CR_DBP;if ((RCC->BDCR & RCC_BDCR_RTCEN) == 0)RCC->BDCR,=RCC_BDCR_RTCEN;3.配置RTC时钟预分频器和提供给RTC的时钟源。
RTC->PRER ,= rtc_prescaler_value << RTC_PRER_PREDIV_S_Pos;RTC->PRER ,= 127 << RTC_PRER_PREDIV_A_Pos;RTC->CR&=~RTC_CR_FMT;三、配置RTC模块时间和日期1.关闭RTC时钟写保护功能。
RTC->WPR=0xCA;RTC->WPR=0x53;RTC->ISR,=RTC_ISR_INIT;while((RTC->ISR & RTC_ISR_INITF) == 0);2.配置RTC的时间和日期寄存器。
RTC->TR ,= (uint32_t)((hours / 10) << RTC_TR_Hours10_Pos);RTC->TR ,= (uint32_t)((hours % 10) << RTC_TR_Hours1_Pos);RTC->TR ,= (uint32_t)((minutes / 10) <<RTC_TR_Minutes10_Pos);RTC->TR ,= (uint32_t)((minutes % 10) <<RTC_TR_Minutes1_Pos);RTC->TR ,= (uint32_t)((seconds / 10) <<RTC_TR_Seconds10_Pos);RTC->TR ,= (uint32_t)((seconds % 10) <<RTC_TR_Seconds1_Pos);RTC->DR ,= (uint32_t)((year / 10) << RTC_DR_YT_Pos);RTC->DR ,= (uint32_t)((year % 10) << RTC_DR_YU_Pos);RTC->DR ,= (uint32_t)((month / 10) << RTC_DR_MT_Pos);RTC->DR ,= (uint32_t)((month % 10) << RTC_DR_MU_Pos);RTC->DR ,= (uint32_t)((day / 10) << RTC_DR_DT_Pos);RTC->DR ,= (uint32_t)((day % 10) << RTC_DR_DU_Pos);3.开启RTC时钟写保护功能。
stm32时钟概念摘要:1.STM32 时钟概念概述2.STM32 时钟的分类3.STM32 时钟的配置方法4.STM32 时钟的应用实例5.总结正文:一、STM32 时钟概念概述STM32 时钟是指基于STM32 单片机的实时时钟(Real-Time Clock,RTC)功能。
实时时钟功能是指单片机内部集成的一个用于提供时间信息的时钟,它可以提供年、月、日、星期、时、分、秒等时间信息。
STM32 时钟广泛应用于各种嵌入式系统中,如智能家居、自动控制、消费电子等领域。
二、STM32 时钟的分类STM32 时钟主要分为以下两类:1.RTC 时钟:RTC 时钟是STM32 单片机内部集成的实时时钟,它可以提供年、月、日、星期、时、分、秒等时间信息。
RTC 时钟可以通过实时时钟控制器(RTC)和实时时钟寄存器(RTC Register)进行配置和控制。
2.EXTI 时钟:EXTI 时钟是STM32 单片机外部中断时钟,它可以通过外部中断控制器(EXTI)进行配置和控制。
EXTI 时钟主要用于实现对外部事件的实时响应和处理,如按键、传感器等外部事件的检测。
三、STM32 时钟的配置方法STM32 时钟的配置方法主要包括以下几个步骤:1.配置RCC 时钟:RCC 时钟是STM32 单片机的核心时钟,它决定了单片机的工作频率。
在配置RCC 时钟时,需要根据实际应用需求选择合适的时钟源和倍频,以满足系统的性能要求。
2.配置RTC 时钟:配置RTC 时钟需要设置RTC 时钟控制器的控制和状态寄存器(RTCCSR),以启用RTC 时钟并设置其工作模式。
同时,还需要配置RTC 时钟寄存器(RTC Register),以设置年、月、日、星期、时、分、秒等时间信息。
3.配置EXTI 时钟:配置EXTI 时钟需要设置外部中断控制器的控制和状态寄存器(EXTICSR),以启用EXTI 时钟并设置其工作模式。
同时,还需要配置外部中断事件表(EXTIEVT),以定义外部中断事件的优先级和中断响应方式。
STM32入门系列教程实时时钟RTC编程Revision0.01(2010-04-27)对于单片机转ARM的同学来说,RTC可能比较少接触。
提到实时时钟,更经常想到的是DS1302。
当然,在STM32里,自己一个CPU已经足够,不需要DS1302。
实际上,RTC就只一个定时器而已,掉电之后所有信息都会丢失,因此我们需要找一个地方来存储这些信息,于是就找到了备份寄存器。
因为它掉电后仍然可以通过纽扣电池供电,所以能时刻保存这些数据。
我们在本期教程中将详细讲述RTC原理及例程,以引导大家顺利进入RTC的世界。
1.STM32的RTC模块RTC模块之所以具有实时时钟功能,是因为它内部维持了一个独立的定时器,通过配置,可以让它准确地每秒钟中断一次。
下面就来看以下它的组成结构。
1.1RTC的组成RTC由两个部分组成:APB1接口部分以及RTC核心部分(感觉说了等于没说,因为任何模块都会有接口部分和它自己的核心部分。
请注意,权威的STM32系列手册是这么说的�)。
笔者猜想原因可能是STM32所有的外设默认时钟无效,使用某个外设时,再开启时钟,用这样的方式来降低功耗。
这里的RTC,APB1接口由APB1总线时钟来驱动。
为了突出时钟吧?不过据说APB1接口部分还包括一组16位寄存器。
RTC核心部分又分为预分频模块和一个32位的可编程计数器。
前者可使每个TR_CLK周期中RTC产生一个秒中断,后者可被初始化为当前系统时间。
此后系统时间会按照TR_CLK周期进行累加,实现时钟功能。
1.2对RTC的操作我们对RTC的访问,是通过APB1接口来进行的。
注意,APB1刚被开启的时候(比如刚上电,或刚复位后),从APB1上读出来的RTC寄存器的第一个值有可能是被破坏了的(通常读到0)。
这个不幸,STM32是如何预防的呢?我们在程序中,会先等待RTC_CRL寄存器中的RSF位(寄存器同步标志)被硬件置1,然后才开始读操作,这时候读出来的值就是OK的。
22 实时时钟(RTC)22.1 简介实时时钟是一个独立的BCD定时/计数器。
可以提供一个时钟日历、两个可编程的闹钟中断以及一个有中断能力的周期性可编程的唤醒标志,RTC同时包括一个自动唤醒单元来管理低功耗模式。
RTC有两个32位寄存器,其中包括以BCD码表示的秒、分、时(12或24小时制)、日(Day of week)、日期(day of mouth)以及年。
亚秒(sub-seconds)值也可以用BCD码表示。
自动执行28、29(闰年)、30、31天的补偿以及夏令时的补偿。
附加的32位寄存器包含可编程的闹铃亚秒、秒、分、小时、日(day of week)可日期(day of mouth).数字校准器可以补偿任何晶振带来的偏差。
上电复位后所有的RTC寄存器都被保护,以防止可能的误写访问。
不管设备处于什么状态(运行模式(Run mode),低功耗模式(Low power mode)或者正在复位(under reset)),只要供电在工作范围内,RTC就不会停止。
22.2 RTC的主要特性RTC单元的主要特性如下:·拥有亚秒、秒、分、小时、星期、日期,月和年的日历。
·软件编程的夏令补偿。
·两个有中断功能的可编程闹钟。
闹钟可以通过任何日历的组合来触发。
·自动唤醒单元产生一个周期标志来触发一个自动唤醒中断。
·参考时钟选择:可以选择一个更精确的源秒时候来确保日历的精确度。
·使用亚秒切换特性通过一个外部时钟来达到精确的同步。
·可屏蔽中断/事件:- 闹钟A- 闹钟B- 唤醒中断- 时间戳- 侵入检测·数字校验电路(周期计数校正)- 5 ppm的精度- 0.95ppm的精度,获得一个几秒种的校准窗口·可保存事件的时间戳功能(一个事件)·侵入事件- 两个可配置滤波器和侵入上拉的侵入事件。
·20个后备寄存器(80个字节).当一个选择的侵入检测事件发生时后备寄存器被复位。
STM32-实时时钟(RTC)STM32系列基于专为要求高性能、低成本、低功耗的嵌入式应用专门设计的ARM Cortex®-M0,M0+,M3, M4和M7内核(ST's product portfolio contains a comprehensive range of microcontrollers, from robust, low-cost 8-bit MCUs up to 32-bit ARM-based Cortex®-M0 and M0+, Cortex®-M3, Cortex®-M4 Flash microcontrollers with a great choice of peripherals. ST has also extended this range to include an ultra-low-power MCU platform) 。
实时时钟(RTC)是一个专用于保持时间的计时元素。
在许多的应用中,特别是在需要执行精确定时操作的应用,RTC是非常有用的工具。
除了钟表这类应用的例子外还包括洗衣机、医药柜、数据记录仪等。
RTC基本上是一个定时计数器,但和MCU的其他定时器不同的是,它更精确一些。
在此之前文章中,我们探讨了STM32定时器,但他们对PWM生成、时基和其它波形相关任务的应用程序是有用的。
那些都不适合于精确的计时功能。
在大多数的8位MCU中,像普通的PIC和AVR,并有没有内置RTC模块,所以当我们需要一个板载的精确计时器件时,只能使用类似常见的DS1302或PCF8563的专用RTC 芯片。
这些芯片还需要一些额外的电路、布线以及电路板空间。
但是,目前大多数先进的微控制器都集成了设计人员可以想到的每一个可能的硬件。
这仅取决于设计者决定使用现代微控制器的哪个资源,来满足特定的设计目标。
制造用于满足应用特定需求的MCU的时代已经过去了,在设计中使用并涉及多个元件的时代也已经过去了。
26.在PVD电源监控实验的基础上,修改PVD监控的电压阈值等级,进入PVD中断时“3.3V”电源线的临界电压。
第43章RTC—实时时钟43.1RTC简介RTC—real time clock,实时时钟,主要包含日历、闹钟和自动唤醒这三部分的功能,其中的日历功能我们使用的最多。
日历包含两个32bit的时间寄存器,可直接输出时分秒,星期、月、日、年。
比起F103系列的RTC只能输出秒中断,剩下的其他时间需要软件来实现,429的RTC可谓是脱胎换骨,让我们在软件编程时大大降低了难度。
RTC功能框图分析43.2RTC功能框图解析1.时钟源RTC时钟源—RTCCLK可以从LSE、LSI和HSE_RTC这三者中得到。
其中使用最多的是LSE,LSE由一个外部的32.768KHZ(6PF负载)的晶振提供,精度高,稳定,RTC 首选。
LSI是芯片内部的30KHZ晶体,精度较低,会有温漂,一般不建议使用。
HSE_RTC 由HSE分频得到,最高是4M,使用的也较少。
2.预分频器预分频器PRER由7位的异步预分频器APRE和15位的同步预分频器SPRE组成。
异步预分频器时钟CK_APRE用于为二进制RTC_SSR亚秒递减计数器提供时钟,同步预分频器时钟CK_SPRE用于更新日历。
异步预分频器时钟f CK_APRE=f RTC_CLK/(PREDIV_A+1),同步预分频器时钟f CK_SPRE=f RTC_CLK/(PREDIV_S+1),)。
使用两个预分频器时,推荐将异步预分频器配置为较高的值,以最大程度降低功耗。
一般我们会使用LSE生成1HZ的同步预分频器时钟通常的情况下,我们会选择LSE作为RTC的时钟源,即f RTCCLK=f LSE=32.768KHZ。
然后经过预分频器PRER分频生成1HZ的时钟用于更新日历。
使用两个预分频器分频的时候,为了最大程度的降低功耗,我们一般把同步预分频器设置成较大的值,为了生成1HZ的同步预分频器时钟CK_SPRE,最常用的配置是PREDIV_A=127,PREDIV_S=255。