历史上的今天
返回首页

历史上的今天

今天是:2025年03月06日(星期四)

正在发生

2019年03月06日 | STM32的RTC简单操作

2019-03-06 来源:eefocus

简单说明:

/*****************************************************************************************************

1、RTC模块和时钟配置系统(RCC_BDCR寄存器)处于后备区域中。其断电时靠备份电源供电可继续维持其功能。所以RTC的使用同时涉及到BKP(备份寄存器)和PWR(电源控制),还需对它们进行配置。


2、由于RTC之前可能已配置(不是第一次使用),它断电时若有备份电源时,其仍在工作,若如此,我们上电后的程序就要考虑是否还要重新配置,若重新配置,之前的就会“灰飞烟灭”;所以,当我们是第一次使用或没有备份时,我们就配置RTC,若之前已配置,我们就不调用,直接使用。在本例中写一个值到BKP_DR1中以标示RTC是否已配置,在启动之后程序检查BKP_DR1的值。(1)若BKP_DR1的值不正确:(BKP_DR1的值有误或者由于是第一次运行值还未写进去),则需要配置RTC(2) 若BKP_DR1的值正确,则意味着RTC已配置.

******************************************************************************************************************/

1.首先,需要用到BKP和PWR,则当然要使能其时钟咯。 因为RTC的一些设置是保存在后备域中的,so,操作RTC的设置寄存器前,要打开后备域模块中的写保护功能。调用函数PWR_BackupAccessCmd(ENABLE);

 

2.接着,我们使用LSE作为RTC的时钟,则需要进行相应时钟的配置;配置完后就可以开启RTC时钟;开启后,还需等待APB1时钟与RTC时钟同步(调用RTC_WaitForSynchro())才能读写RTC寄存器;

 

3.我们对RTC进行写入操作之前,都要检查命令有没有完成,调用RTC_WaitForLastTas()即可;我们要对寄存器写入哪些值呢?分频数、操作中断等。

 

4.因为我们要在BKP中加入RTC校验功能,所以还需调用函数BKP_TamperPinCmd(DISABLE)失能侵入检测功能。RTC时钟经64分频输出到侵入检测引脚TAMPER上,可调用BKP_RTCOutputConfig(BKP_RTCOutputSource_CalibClock)来实现;

 

5.当然,要用到中断、串口,肯定要进行相应配置的。

 

6.中断函数在stm32f10x_it.c文件中编写,注意每一种中断都有其指定的中断服务函数名称,如果自己胡乱该名称,编译器是不能识别是该类中断的。

 

7.注意:不管我们是否需要重新配置RTC,每次系统复位都需要执行如下操作:打开PWR和BKP外设时钟、打开后备区域的写保护功能(系统复位后,对后备寄存器和RTC的访问被禁止)、使能RTC时钟();具体函数如下:RCC_APB1PeriphClockCmd(RCC_APB1Periph_PWR | RCC_APB1Periph_BKP, ENABLE);
PWR_BackupAccessCmd(ENABLE);
RCC_RTCCLKCmd(ENABLE);(若不调用该函数,就会在 RTC_WaitForSynchro() 函数中死循环,等待RTC时钟同步)。


推荐阅读

史海拾趣

问答坊 | AI 解惑

柴油发电机常见问题

柴油机熄火停车或运转不稳定:     柴油机启动困难或运转不稳定燃油污染或不适宜将燃油排放并以适当燃油加注燃油系统内有空气或燃油系统管路未锁紧将燃油管路排器且锁紧燃油系统管路燃油管路阻塞清洗燃油管路喷嘴总成或燃油泵失效更换喷 ...…

查看全部问答>

PADS Layout 覆铜问题

PADS Layout在灌铜时,能不能自动把死铜去掉呢?有没有自动去掉死铜这个功能?…

查看全部问答>

提供基于Vxworks的各种PowerPC平台(MPC82XX/MPC85XX/MPC7448/AMCC440GX等)

Beijing Freesense是专业PowerPC设计公司,提供基于Vxworks和Liunx的各种PowerPC平台(MPC82XX/MPC85XX/MPC7448/AMCC440GX等),提供设计开发服务。Tel: 010-82790138、13501394847,zhytang@freesense.com.cn…

查看全部问答>

PDA的FLASH坏了,换FLASH怎么烧写?

我的PDA 宏基N300 flash坏了,开机死在BOOT画面,重新用SD卡刷机也能刷过,但是还是死在BOOT画面,换好机器的FLASH能好,现在想换片新的FLASH,请问各位怎么烧写? 目前的文件有: EBOOT.bin EBOOT.nb0 flash.dio superipl.nb0 以上这几个文件是拷入S ...…

查看全部问答>

关于学习嵌入式的为题

各位高手请指点一下:我刚刚毕业,在学校接触过嵌入式的一些东西,但学的相当有限。现在想要学习嵌入式,我应该从何入手?如果我打算从事嵌入式方面的工作,我有没有参加“嵌入式培训”必要?另外,那些培训机构比较好?谢谢,各位热心人!…

查看全部问答>

MP3属于嵌入式系统吗

各位,我不是很清楚嵌入式系统,请问我们外面买的那些MP3/4属于嵌入式系统吗?还有一个问题,我在网上看到基本上嵌入式系统好像就分两种,什么LINUX和WINCE,怎么区分呢,我做MP3开发的,是C语言和汇编混合的,不知道这个是属于哪种呢?谢谢!…

查看全部问答>

FTF China 2010之行 (3)

1.       智能电网。智能电网可能是本次FTF最为突出的主题,其实去年FTF也就在推这个理念,当然大家都相信智能电网是大势所趋,飞思卡尔在智能电表和集中器方面展示了解决方案,其中集中器用的就是传说中的MCF54418 ...…

查看全部问答>

非可屏蔽中断的处理

大家好!一直用的网上的MSP430的程序框架写程序,程序的最后有一段是关于非可屏蔽中断的。程序如下: /***************************************************************************** 不可屏蔽中断函数 ************************************ ...…

查看全部问答>