当前位置:首页 > 单片机 > 单片机
[导读]在STM32里面有备份寄存器(BKP),它的功能之一就是用来存储RTC校验值的校验寄存器,即具有RTC校准功能。在PC13引脚上输出RTC 校准时钟,RTC闹钟或者秒脉冲。在程序中有#define RTCClockOutput_Enable /*RTC Clock/64

STM32里面有备份寄存器(BKP),它的功能之一就是用来存储RTC校验值的校验寄存器,即具有RTC校准功能。在PC13引脚上输出RTC 校准时钟,RTC闹钟或者秒脉冲。在程序中有#define RTCClockOutput_Enable /*RTC Clock/64 is output on tamper pin(PC.13)*/

BKP可以用来存储84个字节的用户应用程序数据,他们处在备份域里,当Vdd电源被切断时,他们仍然由Vbat维持供电。

判断RTC后备寄存器1的值是否为事先写入的某个值,如果不是,则说明RTC是第一次上电,需要配置RTC。针对BKP也有相应的库函数。

u16 BKP_ReadBackupRegister(u16 BKP_DR) 从指定的后备寄存器中读出数据

如果不是之前写入的某个值,需要配置RTC,函数RTC_Configuration(void)

执行以下操作将使能对后备寄存器和RTC的访问:

● 设置寄存器RCC_APB1ENR的PWREN 和BKPEN位,使能电源和后备接口时钟

● 设置寄存器PWR_CR的DBP位,使能对后备寄存器和RTC的访问。

 

 
  1. RCC_APB1PeriphClockCmd(RCC_APB1Periph_PWR | RCC_APB1Periph_BKP, ENABLE);//对应操作1  
  2. PWR_BackupAccessCmd(ENABLE);//对应操作2  

RTC模块用外部LSE时钟--32.768的晶振作为时钟,由寄存器控制启动和关闭,然后等待状态稳定后,寄存器指示LSE晶振振荡器是否稳定。

 
 
  1. RCC_LSEConfig(RCC_LSE_ON);//使能LSE  
  2. /* 等待外部晶振震荡稳定输出 */  
  3. while (RCC_GetFlagStatus(RCC_FLAG_LSERDY) == RESET)  
  4. {}  

 

待LSE状态稳定后,使用外部32.768KHz晶振作为RTC时钟,由库函数RCC_RTCCLKConfig(RCC_RTCCLKSource_LSE)实现

 
  1. RCC_RTCCLKConfig(RCC_RTCCLKSource_LSE); //使用LSE作为RTC时钟  
  2. RCC_RTCCLKCmd(ENABLE); //使能RTC,只有在通过RCC_RTCCLKConfig选择RTC时钟后,才能调用  
 
  1. RTC_WaitForSynchro();//等待RTC寄存器与APB时钟同步??  
  2. /* Wait until last write operation on RTC registers has finished */  
  3. RTC_WaitForLastTask();  
  4. /* 使能RTC的秒中断 */  
  5. RTC_ITConfig(RTC_IT_SEC, ENABLE);//在使能中断前,必须调用RTC_WaitForLastTask();  
  1. RTC_SetPrescaler(32767);//设置RTC的预分频值 

 

RTC_WaitForLastTask( )的作用:软件通过APB1接口访问RTC的预分频值、计数器值等,但是,相关的可读寄存器只在与RTC APB1时钟进行重新同步的RTC时钟的上升沿被更新。RTC标志也是如此。这意味着如果APB1接口曾经被关闭,而读操作又是在刚刚重新开启APB1之 后,则在第一次的内部寄存器更新之前,从APB1上读出的RTC寄存器数值可能已经被破坏了。因此,若在读取RTC寄存器时,RTC的APB1接口曾经处 于禁止状态,则软件必须等待RTC_CRL寄存器中的RSF位(寄存器同步标志)被硬件置‘1’。

在RTC读取的数据是之前写入到BKP中的数据,那么会调用函数RCC_GetFlagStatus()读取状态/控制寄存器RCC_CSR中的某些位来判断启动后的状态,

判断掉电/上电复位标志或者复位标志,如果相应的标志位为1,则不需要从新配置RTC。

最后清除RCC的复位标志位,void RCC_ClearFlag(void)

在设置了秒中断后,在stm32f10x_it.c中设置了中断处理函数,中断函数中首先需要判断是否发生了秒中断,如果是,需要清除相应的中断标志位。还有一个重要的情况是在时间达到23:59:59时,则下一时刻时间为00:00:00。

 

  1. if (RTC_GetCounter() == 0x00015180) //获取RTC计数器的值  
  2.       RTC_SetCounter(0x0);//设置RTC计数器的值  

 

通过读取RTC计数器的值,可以将其转化为时:分:秒的形式打印出来。 同时,如果RTC是第一次被配置,用户需要输入时间,然后调用Time_Adjust( )将用户输入的时间转化到RTC计数值写到相应的寄存器中。

本站声明: 本文章由作者或相关机构授权发布,目的在于传递更多信息,并不代表本站赞同其观点,本站亦不保证或承诺内容真实性等。需要转载请联系该专栏作者,如若文章内容侵犯您的权益,请及时联系本站删除。
换一批
延伸阅读

上海2026年3月19日 /美通社/ -- 2026世界一级方程式赛车锦标赛(以下简称F1)中国大奖赛正赛上周在上海国际赛车场落幕。作为F1官方物流合作伙伴,DHL与这项全球...

关键字: 可持续发展 BSP 供应链 环境影响

上海2026年3月19日 /美通社/ -- 三月春深,万物竞发,绿色生机成为各行各业高质量发展的鲜明底色。对于正处于深刻变革中的汽车产业而言,绿色发展不仅是趋势,更是驱动技术进化与价值重构的核心力量。中国汽车工...

关键字: 新能源汽车 轮胎 P10 BSP

北京2026年3月20日 /美通社/ -- 近年来,算力已成为驱动产业升级、支撑科技创新的核心生产力。作为全国一体化算力网络建设的重要参与者,软通智算聚焦算力网运营核心赛道,近期在三大国家枢纽节点接连取得突破性...

关键字: 节点 BSP 网络建设 全栈

北京2026年3月20日 /美通社/ -- 当前,人工智能正以前所未有的速度重塑各行各业,教育领域也迎来从知识灌输到素养培育的深刻变革。如何培养适应并引领未来的青少年,成为全社会共同关注的教育命题。 近日,中科院实验室...

关键字: 中科院 AI AI技术 BSP

上海2026年3月18日 /美通社/ -- 备受瞩目的3D打印行业盛会2026 TCT亚洲展今日拉开帷幕,将连续三天(3月17 - 19日)在国家会展中心(上海)7.1&8.1馆隆重上演。TCT亚洲展不...

关键字: TC INTRO BSP CAN

该奖项彰显了DXC的地位:作为可信赖的合作伙伴,助力全球企业实现现代化运营并推进AI应用 弗吉尼亚州阿什本2026年3月18日 /美通社/ -- 领先的企业技术与创新合作伙伴DXC Technology(纽约证券交易所...

关键字: 福布斯 AI BSP ST

北京2026年3月17日 /美通社/ -- 还在为每天淹没在碎片化的融资新闻里而头疼吗?担心错过关键赛道的早期信号?现在,有了更高效的办法。 亿欧刚刚为OpenClaw(小龙虾)生态,带来了一个"专...

关键字: SKILL AI AGENT BSP

西门子旗舰科技大会首发中国,打造AI时代科技交流、生态开放新平台 董事会主席、总裁兼首席执行官博乐仁(Roland Busch)将发表主旨演讲,与阿里巴巴集团主席蔡崇信,宇树科技创始人、董事长兼首席执行官王兴兴...

关键字: 西门子 AI BSP NVIDIA

广州2026年3月16日 /美通社/ -- 近日,全球领先的第三方专业检验检测认证机构 DEKRA 德凯正式授予中汽研汽车检验中心(广州)有限公司(下称 "广州检验...

关键字: 汽车 镍氢电池 电池检测 BSP

上海2026年3月13日 /美通社/ --  家电盛会里的"天外来客" 在2026年中国家电及消费电子博览会(AWE)的聚光灯下,当众多参展商聚焦于展示扫地机器人的吸力性能或洗碗机的...

关键字: BSP 卫星 芯片 手机
关闭