历史上的今天
今天是:2024年11月18日(星期一)
2019年11月18日 | stm32F1RTC
2019-11-18 来源:eefocus
RTC
概述
STM32 的实时时钟(RTC)是一个独立的定时器。 STM32 的 RTC 模块拥有一组连续计数
的计数器, 在相应软件配置下,可提供时钟日历的功能。修改计数器的值可以重新设置系统当
前的时间和日期。
RTC 模块和时钟配置系统(RCC_BDCR 寄存器)是在后备区域,即在系统复位或从待机模式唤醒后 RTC 的设置和时间维持不变。但是在系统复位后,会自动禁止访问后备寄存器和 RTC,以防止对后备区域(BKP)的意外写操作。所以在要设置时间之前, 先要取消备份区域(BKP)写保护。(每次在操作RTC时要先使能后备寄存器的访问)
RTC可以实现的功能
1:时钟日历的显示
2:闹钟功能
3:秒中断操作
配置过程
1:开启时钟源
//开启电源时钟和备份域时钟
RCC_APB1PeriphClockCmd(RCC_APB1Periph_PWR | RCC_APB1Periph_BKP, ENABLE);
2:使能后备寄存器的访问
//上面提到过系统复位后会自动禁止访问后备寄存器和RTC
PWR_BackupAccessCmd(ENABLE);
3:复位备份域
//取消写保护后要清除备份域的数据,清除之前的设置(看情况而定,并不是每次都要复位)
BKP_DeInit();
4:开启外部低速振荡器
RCC_LSEConfig(RCC_LSE_ON);
5:等待LSE启动稳定
while (RCC_GetFlagStatus(RCC_FLAG_LSERDY) == RESET)
6:选择RTC的时钟
RTC 时钟的选择,还有 RCC_RTCCLKSource_LSI 和 RCC_RTCCLKSource_HSE_Div128
两个,前者为 LSI,后者为 HSE 的 128 分频
RCC_RTCCLKConfig(RCC_RTCCLKSource_LSE);
7:使能RTC时钟
RCC_RTCCLKCmd(ENABLE);
8:等待最近一次对RTC寄存器的写操作完成,等待RTC寄存器同步
RTC_WaitForLastTask();
RTC_WaitForSynchro();
9:相关配置
下面这几步操作顺序可以替换,但是逻辑不能乱
RTC_ITConfig(RTC_IT_SEC, ENABLE); //使能 RTC 秒中断
RTC_WaitForLastTask(); //等待最近一次对 RTC 寄存器的写操作完成
RTC_EnterConfigMode(); // 允许配置
RTC_SetPrescaler(32767); //设置 RTC 预分频的值
RTC_WaitForLastTask(); //等待最近一次对 RTC 寄存器的写操作完成
RTC_SetCounter(seccount);//设置时间
RTC_ExitConfigMode(); //退出配置模式
从上面的过程中我们可以看出,RTC时钟的配置过程主要分为以下几个模块
1:允许访问
2:时钟源选择
3:允许配置设置相关参数(分频值,时间,中断)
只是在操作的时候我们有些要求
1:必须取消写保护(系统复位后会自动禁止访问后备寄存器和RTC)
2:每次配置前要先寄存器同步,允许配置,等待上次操作完成
3:要记得退出配置
这些要求手册中的寄存器介绍中都有描述
下一篇:stm32f0_GPIO
史海拾趣
|
现在大陆市场中,由于监控发展较晚!红外半球摄像机红外灯被大陆的经销商和工程商吵的是如何如何的好,像什么白天一样!晚上没有任何光源,都能很清晰的分晰这个人是谁,这些话虽然让产品卖出去了,可是搞伤了我们技术人员和工程人员,验收那个难啊 ...… 查看全部问答> |
|
编译源码时出现了附件中的错误,由以上可知,是缺少luuid,经查找是缺少e2fsprogs-1.39.tar.gz这个包,已经下载了这个文件,接下来该怎么做??? [ 本帖最后由 jxb01033016 于 2009-9-4 11:47 编辑 ]… 查看全部问答> |
|
求梅兰日兰UPS中文使用说明书 请问哪位师傅手里有梅兰日兰UPS中文使用说明书啊,帮忙给传一下,或者给个网址也行啊,UPS是4.2KW、6KVA,我先谢谢啦!… 查看全部问答> |
|
nand flash里bootloader的结构如下: 0:nboot 1:tocblock1 file 2:eboot 有人这样安装吗? 有人改写过nboot吗? 我的板子是2410的,我从网上找到了2410 BSP里面关于nboot的代码 读了下nboot里面的代码,硬件主要是初始化串口,感觉这些是通用的, ...… 查看全部问答> |
|
看了GOOOGLEMAN的文章 http://www.cnblogs.com/wogoyixikexie/archive/2009/05/06/1450503.html 在platform->setting->environment 中设置IMGSDBUS2 = 1 在common.bib中也修改过 根本内容我也修改了BSP.C:\\WINCE500\\PLATFORM\\smdk2440\\DRIV ...… 查看全部问答> |
|
哪为江湖大虾有研究过播放器Mplayer的原代码啊,特别是它Demux是如何处理的,最好能讲讲Mplayer的主处理函数,和详细的Demux过程?小弟不胜感激!… 查看全部问答> |




