配置RTC 软件运行到硬件故障

配置RTC 软件运行到硬件故障,第1张

RTC硬件故障解决方法:1、主板换电池,可解决关机时的时钟继续走;2、通过软件同步时钟。开启系统时钟同步功能,只要联互联网自动会同步。3、开发一个小程序,自动和指定的服务器同步时钟。4、买一个GPS时钟。

RTC的英文全称是Real-TimeClock,翻译过来是实时时钟芯片。RTC是PC主板上的晶振及相关电路组成的时钟电路的生成脉冲,RTC经过8254电路的频产生一个频率较低一点的OS(系统)时钟TSC,系统时钟每一个cpu周期加一,每次系统时钟在系统初起时通过RTC初始化。

周期性唤醒标志由 16 位可编程自动重载递减计数器生成。唤醒定时器范围可扩展至 17 位。

可通过 RTC_CR 寄存器中的 WUTE 位来使能此唤醒功能。

唤醒定时器的时钟输入可以是:  2、4、8 或 16 分频的 RTC 时钟 (RTCCLK)。

当 RTCCLK 为 LSE (32.768 kHz) 时,可配置的唤醒中断周期介于 122 µs 和 32 s 之 间,且分辨率低至 61 µs。

· ck_spre(通常为 1 Hz 内部时钟)。

当 ck_spre 频率为 1 Hz 时,可得到的唤醒时间为 1s 到 36h 左右,分辨率为 1 秒。这 一较大的可编程时间范围分为两部分:

– WUCKSEL [2:1] = 10 时为 1s 到 18h

– WUCKSEL [2:1] = 11 时约为 18h 到 36h。在后一种情况下,会将 216 添加到 16 位计数器当前值。完成初始化序列后(请参见第 600 页的编程唤醒定时器),定时 器开始递减计数。在低功耗模式下使能唤醒功能时,递减计数保持有效。此外,当 计数器计数到 0 时,RTC_ISR 寄存器的 WUTF 标志会置 1,并且唤醒寄存器会使用其重载值(RTC_WUTR 寄存器值)动重载。 之后必须用软件清零 WUTF 标志。

通过将 RTC_CR2 寄存器中的 WUTIE 位置 1 来使能周期性唤醒中断时,它会使器件退出低功耗模式

如果已通过 RTC_CR 寄存器的位 OSEL[1:0] 使能周期性唤醒标志,则该标志可连接到RTC_ALARM 输出。可通过 RTC_CR 寄存器的 POL 位配置 RTC_ALARM 输出极性。

系统复位以及低功耗模式(睡眠、停机和待机)对唤醒定时器没有任何影响。

 

二、配置周期唤醒

配置步骤如下:

1. 禁用周期唤醒功能,复位RTC_CR2中WUTE位;

2. 等待RTC_ISR1中WUTWF位置位,表示唤醒计数器可配置;

3. 配置唤醒时钟,设置RTC_CR1中WUCKSEL[2:0]位:

- 000: RTCCLK/16

- 001: RTCCLK/8

- 010: RTCCLK/4

- 011: RTCCLK/2

- 10x: ck_spre(1Hz,WUT计数范围:0x0000~0xFFFF)

- 11x: ck_spre(1Hz,WUT计数范围:0x10000~0x1FFFF)

4. 配置唤醒周期,装载寄存器RTC_WUTRH和RTC_WUTRL;

5. 使能周期唤醒功能,置位RTC_CR2中WUTE位。(该中断会使MCU退出低功耗状态,进入运行状态。)

 

 

RTCCLK,预分频2,4,8或16。如果RTCCLK为LSE,即32768Hz,则可配置唤醒周期为:(61us ~ 32s)

 

ck_spre, 1Hz时钟,则可配置唤醒周期为:(1s ~ 36h)

 

三、RTC时钟配置

1、时钟源选择:RTC时钟源可选HSE,LSE,HSI或LSI。

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

 

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

 

3、配置ck_spre时钟ck_spre时钟,默认1Hz时钟。

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

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

即:1Hz=32768/((127+1)*(255+1))

 

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

 

代码参考

//参数time 秒

void APP_EnterLP(uint32_t time )

{

         MX_GPIO_Init_stop()

 /* Enable Ultra low power mode */

          HAL_PWREx_EnableUltraLowPower()//使能超低功耗

          /* Enable Fast WakeUP */

          HAL_PWREx_EnableFastWakeUp()           //使能快速唤醒

           /* Disable Wakeup Counter */

         HAL_RTCEx_DeactivateWakeUpTimer(&hrtc)

         

      

      /* Clear Wake Up Flag */

        __HAL_PWR_CLEAR_FLAG(PWR_FLAG_WU)

        

    //    HAL_RTCEx_SetWakeUpTimer_IT(&hrtc, (uint32_t)(time * 2048), RTC_WAKEUPCLOCK_RTCCLK_DIV16)//rtc LSE=32.768k   2048Hz   488us-- 32秒

 

        HAL_RTCEx_SetWakeUpTimer_IT(&hrtc, time-1, RTC_WAKEUPCLOCK_CK_SPRE_16BITS)//wangxl@20190814  时钟选择1Hz  65535/60/60 ~18  可得到的唤醒时间为 1s 到 18h 左右

        

        printf("进入停止模式\r\n")

        

        /* Select MSI as system clock source after Wake Up from Stop mode */

        __HAL_RCC_WAKEUPSTOP_CLK_CONFIG (RCC_STOP_WAKEUPCLOCK_HSI)

        

        HAL_PWR_EnterSTOPMode(PWR_LOWPOWERREGULATOR_ON , PWR_STOPENTRY_WFI)

              

        MX_GPIO_Init()

       

        HAL_Delay(5) //wangxl@20190814  稳定时钟 必免串口打印乱码

        printf("wake up\r\n")

}

打开CSDN,阅读体验更佳

STM32---RTC实时时钟,随机数发生器和待机唤醒_码字但很菜的博客-CSDN博...

void RTC_AlarmSubSecondConfig(uint32_t RTC_Alarm, uint32_t RTC_AlarmSubSecondValue,uint32_t RTC_AlarmSubSecondMask) uint32_t RTC_GetAlarmSubSecond(uint32_t RTC_Alarm)RTC周期唤醒相关函数 void RTC_WakeUpClockConfig(...

继续访问

STM32L051低功耗STOP模式下RTC唤醒_TonyIOT的博客_stm32l05...

很多MCU都有低功耗模式,以满足对功耗要求苛刻的应用场景。STM32系列MCU的低功耗模式根据其内核与类型的不同也各不相同,网上有很多文章介绍。本文总结下STM32L051的STOP模式,通过RTC唤醒。

继续访问

最新发布 GD32F4—RTC闹钟及自动唤醒中断配置详解

GD32F4RTC闹钟及自动唤醒中断配置

继续访问

【STM32】RTC休眠唤醒(停机模式)、独立看门狗开启状态下

本文章基于STM32F103RC; 在开启独立看门狗的状态下,进入停机模式,由RTC定时闹钟唤醒系统。 直接上代码: #include "main.h" static void RTC_NVIC_Config(void) { EXTI_InitTypeDef EXTI_InitStructureNVIC_InitTypeDef NVIC_InitStructureNVIC_InitStructure.NVIC_IRQChannel = RTCAlarm_IRQn

继续访问

stm32f103 RTC周期性待机唤醒(一)_luck_horse的博客

我的RTC初始化部分有个“保存在备份寄存器的RTC标志是否已经被配置过的判断”,如果已经配置过,则进入else部分,但是这个else部分没有“要使能电源时钟,使能备份时钟,取消后备区的写保护”这些配置语句,而待机唤醒后程序从主函数执行,会执行...

继续访问

...RTC实时时钟_基尔霍夫原来是码农的博客_stm32 rtc 时间

RTC简介 STM32F4的RTC,是一个独立的BCD 定时器/计数器。STM32F4的RTC 提供一个日历时钟(包含年月日时分秒信息)、两个可编程闹钟(ALARM A和ALARM B)中断,以及一个具有中断功能的周期性可编程唤醒标志。RTC 还包含用于管理低功耗模式...

继续访问

STM32L031低功耗深度睡眠RTC唤醒注意事项

1. 发现进入睡眠后,电流1.2uA,满足要求。结果唤醒后,第二次进入睡眠后,电流跳到了19uA,且一直保持下去。结果看了https://blog.csdn.net/zzw3255/article/details/54342878的介绍,把串口干掉了,电流下降到了2.6uA。2. 去掉了串口,第一次进入睡眠1.2uA,第二次进入睡眠2.6uA。有陷入了僵局,没开串口、没开GPIO,啥事都没干,怎么...

继续访问

STM32L053RTC——唤醒定时器定时唤醒睡眠

L053RTC——唤醒定时器定时唤醒睡眠

继续访问

CM3计算板RTC闹钟唤醒系统_jianwang16的博客_bios rtc...

rtcctlshowalarm1 /* rtcctl 启用闹钟1 */ rtcctlonalarm1 /* rtcctl 清除闹钟1 */ rtcctl clear alarm1 /* rtcctl 设置闹钟1时间 2019/06/01 15:30:00 闹钟产生中断*/ rtcctlset06/01/201915:30:00 ...

继续访问

RTC自动唤醒_Ftworld21的博客_rtc唤醒

RTC唤醒低功耗(standby)模式 这段时间在公司最一个低功耗的项目,采用的的STM32F103的最低功耗standby模式,进入最低功耗模式后,电流降到了3uA,和芯片手册上的大致相同。对进入低功耗模式,网上有很多程序,我在这里把我的粘贴上来,仅供参...

继续访问

热门推荐 STM32复习笔记(十二)RTC实时时钟(低功耗待机唤醒)

声明:本篇文章只是个人知识盲区、知识弱点、重点部分的归纳总结,望各位大佬不喜勿喷。梳理顺序是按照正点原子的视频和文档的实际顺序梳理,转载请注明出处。 作者:sumjess 适用:这个视频我已经看过3遍了,总会有忘记的,所以来写这本书的随手笔记,记录重点、易忘点。该博客可以当做字典,也可以当做笔记。 目前内容:RTC实时时钟(低功耗待机唤醒)   一、RTC实时时钟特征与原理: ★  R...

继续访问

STM32----RTC实时时钟,随机数发生器和待机唤醒

RTC实时时钟 RTC是个独立的BCD定时器/计数器。RTC 提供一个日历时钟,两个可编程闹钟中断,以及一个具有中断功能的周期性可编程唤醒标志。RTC还包含用于管理低功耗模式的自动唤醒单元。 两个32位寄存器包含二进码十进制格式(BCD)的秒,分钟,小时(12或24小时制),星期几,日期,月份和年份。此外,还可以 提供二进制的亚秒值。 系统可以自动将月份的天数补...

继续访问

hal 外部唤醒脚唤醒_【STM32】HAL库开发教程(六)—低功耗唤醒

前言不必害怕未知,无需恐惧犯错,做一个Creator!本文主要介绍STM32_HAL库开发中低功耗唤醒的使用。一、开发步骤1.STM32CubeMX配置在左侧引脚配置处勾选RTC进行配置在RTC模式处勾选“Wakeup”唤醒使能RTC唤醒模式在RTC参数配置处进行参数配置:RTC时钟、Wakeup唤醒时钟、Wakeup唤醒计数器以及勾选”NVIC Settings”使能外部中断 2.进低功耗程序编...

继续访问

STM32Cube STM32L053配置RTC WAKEUP中断唤醒

芯片手册中提到的从停止模式唤醒说明 芯片手册中提到的从待机模式唤醒说明 配置 LL_RTC_InitTypeDef RTC_InitStruct = {0}LL_RCC_EnableRTC()NVIC_SetPriority(RTC_IRQn,0)NVIC_EnableIRQ(RTC_IRQn)RTC_InitStruct.HourFormat = LL_RTC_HOURFORMAT_24HOURRTC_InitStruct.AsynchPrescaler = 12

继续访问

STM32L0系列单片机低功耗(STOP)使用+RTC唤醒+LPUART(DMA方式)唤醒+LPTIM唤醒

文章目录STM32L0低功耗应用1.睡眠模式2.低功耗运行模式3.低功耗睡眠模式4.带RTC的停止模式5.不带RTC的停止模式6.带RTC待机模式7.不带RTC待机模式留更设定内容居中、居左、居右SmartyPants创建一个自定义列表如何创建一个注脚注释也是必不可少的KaTeX数学公式新的甘特图功能,丰富你的文章UML 图表FLowchart流程图导出与导入导出导入 STM32L0低功耗应用 S...

继续访问

STM32 STOP模式开发问题集锦

STM32 STOP模式开发问题集锦 芯片:STM32L151RBT6 库:HAL库 ①晶振不起振问题 项目过程中,遇到了晶振不起振问题,看了很多帖子,还是不能确定到底是什么问题。我个人建议是使用有源晶振或者是内部晶振(自带晶振不会黑自己吧…) 由于内部低速晶振并非是32.768,所以对RTC要求高的,考虑有源的32.768K晶振,我在实验过程中换了一个无源的KDS(株式会社-大真空)目前也没有发现不起振的情况。高速晶振可以内部,也可以有源。 ②HAL库 中RTC唤醒STOP模式问题 和时间相关的唤醒,一种

继续访问

STM32L151C8T6笔记2:RTC唤醒的STOP模式

尝试在保留RAM数据的前提下进行低功耗定时运行,Stop模式带RTC成为唯一选择,上图来自《AN3193:STM32L1xx超低功耗功能概述》。 梳理工作逻辑: (1)需要进入低功耗之前,先配置RTC的Wakeup(也可以用闹钟Alarm,类似,不赘述): //to set wake up interval if (HAL_RTCEx_SetWakeUpTimer_IT(&hrtc,( RTC_WKUP_INTVAL_IN_SECOND*1000000 /W...

继续访问

RTC定时开机闹钟

RTC是Real Time Clock的简称,它在硬件电路上单独供电,当系统关机时,CPU和其他外部硬件设备全部掉电,但是RTC仍然继续工作. HWCR (Hibernate Wakeup Control Register)是一个控制休眠唤醒的寄存器,如果我们要使用休眠状态下RTC唤醒的功能,我们需要打开它的第0位ELAM(RTC Alarm Wakeup enable),当ELAM置1...

继续访问

STM32F030使用RTC周期性唤醒STOP模式

首先,F030与F072的RTC唤醒功能是不一样的,在相关定义文件stm32f0xx_exti.h中有如下定义: #define EXTI_Line17 ((uint32_t)0x00020000) /*!<Internal interrupt line 17 Con...

继续访问

stm32f103 RTC周期性待机唤醒(一)

转载于http://blog.csdn.net/u011732167/article/details/50958520 今天终于发现问题出在哪里了,对待机唤醒的问题做一个总结(只针对我遇到的问题,其他部分网上都有,基于stm32f103) 1、解决我遇到的问题        我的RTC初始化部分有个“保存在备份寄存器的RTC标志是否已经被配置过的判断”,如果已经配置过,则

继续访问

hal库开启中断关中断_技术笔记STM32CubeL4 固件库V1.13.0版的RTC唤醒

因为STM32L4极其出色的低功耗性能,越来越多的用户在使用STM32L4系列开发产品。谈到低功耗,就少不了低功耗模式。进入低功耗模式,自然需要能够唤醒。很多用户在产品开发中会使用RTC把系统从低功耗模式定时唤醒。问题客户在产品的设计中,使用STM32L476RGT6。客户使用RTC的定时唤醒来将系统从STOP2模式中唤醒,但是发现无法唤醒。调研01了解问题客户参考\STM32Cube_...

继续访问

stm32中断源有哪些_STM32低功耗待机模式+RTC闹钟中断唤醒

很多单片机都有低功耗模式,STM32 也不例外。在系统或电源复位以后,微控制器处于运行状态。运行状态下的HCLK为CPU提供时钟,内核执行程序代码。当CPU不需继续运行时,可以利用多个低功耗模式来节省功耗,例如等待某个外部事件时。用户需要根据最低电源消耗,最快速启动时间和可用的唤醒源等条件,选定一个最佳的低功耗模式。 单片机内部功率是各功能部分功率的总和,低功耗模式是通过关掉部分内部功能达到...

继续访问

STM32开发笔记30:STM32L0低功耗设计——STOP_RTC模式下的休眠时间

单片机型号:STM32L053R8T6     本文介绍STOP_RTC模式下,设置进入低功耗休眠时间的方法。     低功耗的休眠时间的设置首先需要确定RTC的基准时间,我们一般将其设置为1秒,这在《STM32L0低功耗设计4: RTC模块1秒时钟的产生方法》中已经介绍过,大家看一下就好。     接下来,就需要对HAL_RTCEx_SetWakeUpTimer_IT函数的第2个参数进行设...

继续访问

基于STM32通过RTC唤醒低功耗模式

RTC自动唤醒低功耗模式

RTC的英文全称是Real-Time Clock,翻译过来是实时时钟芯片。

实时时钟的缩写是RTC(Real_Time Clock)。RTC 是集成电路,通常称为时钟芯片。

实时时钟芯片是日常生活中应用最为广泛的消费类电子产品之一。

它为人们提供精确的实时时间,或者为电子系统提供精确的时间基准,目前实时时钟芯片大多采用精度较高的晶体振荡器作为时钟源。

有些时钟芯片为了在主电源掉电时,还可以工作,需要外加电池供电。

拓展资料:

实时时钟芯片的时间误差主要来源于时钟芯片中晶振的频率误差,而晶振的频率误差主要是由于温度变化引起的。

所以,把温度对晶振谐振频率所产生的误差进行有效的补偿,是提高时钟精度的关键。

石英晶体谐振频率误差补偿方法,是在晶振谐振频率随着温度的变化存在误差已知的基础上, 对产生1Hz频率的分频计数器进行精确补偿的方法。

RTC最重要的功能是提供到2099年内的日历功能,对于时间来说,无论快慢都是误差,而匹配电容在RTC的外围器件上起到非常重要的作用,它可以适当修正晶体与RTC之间匹配问题。


欢迎分享,转载请注明来源:内存溢出

原文地址: http://outofmemory.cn/yw/11049347.html

(0)
打赏 微信扫一扫 微信扫一扫 支付宝扫一扫 支付宝扫一扫
上一篇 2023-05-13
下一篇 2023-05-13

发表评论

登录后才能评论

评论列表(0条)

保存