stm32 rtc 实时时钟
STM32的实时时钟是一个独立的定时器
通常会在后备区域供电端加一个纽扣电池,当主电源没有电的时,RTC不会停止工作
若VDD电源有效,RTC可以触发秒中断、溢出中断和闹钟中断
备份寄存器BKP
备份寄存器是42个16位的寄存器,他们处在备份域里,当VDD电源被切断,他们仍然由VBAT维持供电。当系统在待机模式下被唤醒或系统复位或电源复位时,他们也不会被复位
RTC配置步骤
1.使能电源时钟和后备区域时钟
2.取消后备区域的写保护,DBP
3.复位备份区域
4.外部低速振荡器使能,LSE
5.RTC时钟源选择,LSE
6.RTC时钟使能7.进入配置模式
8.设置RTC预分频装载值
9.设置RTC计数器值
10.退出配置模式11.初始化NVIC外设,设置RTC中断优先级
12.编写RTC中断处理函数
举例
typedef struct
{
u32 hour;
u32 min;
u32 sec;
}time_t;
time_t g_time;
void RTC_get()
{
u32 counter;
counter = RTC_GetCounter(); //读取计数器值
g_time.hour = counter / 3600;
g_time.min = (counter % 3600) / 60 ;
g_time.sec = counter % 60 ;
}
void RTC_IRQHandler()
{
if(RTC_GetFlagStatus(RTC_FLAG_SEC) == SET)
{
RTC_get();
printf("time %02d:%02d:%02d\n", g_time.hour, g_time.min, g_time.sec);
}
RTC_ClearFlag(RTC_FLAG_SEC);
}
void RTC_init()
{
u16 bkp_data = 0xa5a5;
u16 prescaler = 32768 - 1;
NVIC_InitTypeDef nvic =
{
RTC_IRQn,
2,
2,
ENABLE
};
RCC_APB1PeriphClockCmd(RCC_APB1Periph_PWR | RCC_APB1Periph_BKP, ENABLE); //使能电源时钟和后备区域时钟
PWR_BackupAccessCmd(ENABLE); //取消后备区域的写保护
if(BKP_ReadBackupRegister(BKP_DR1) != bkp_data) //读备份数据
{
BKP_DeInit(); //复位备份区域
RCC_LSEConfig(RCC_LSE_ON); //外部低速振荡器使能
while(RCC_GetFlagStatus(RCC_FLAG_LSERDY) != SET)
{
delay_ms(10);
}
RCC_RTCCLKConfig(RCC_RTCCLKSource_LSE); //LSE振荡器作为RTC时钟
RCC_RTCCLKCmd(ENABLE); //RTC时钟开启
RTC_WaitForLastTask(); //RTC操作关闭(上一次对RTC寄存器的写操作已经完成)
RTC_WaitForSynchro(); //寄存器同步标志(寄存器已经被同步)
RTC_ITConfig(RTC_IT_SEC, ENABLE); //屏蔽中断请求(允许秒中断)
RTC_WaitForLastTask();
RTC_EnterConfigMode(); //配置标志(进入配置模式)
RTC_SetPrescaler(prescaler); //预分频装载值
RTC_WaitForLastTask();
RTC_SetCounter(0xf73f); //设置计数器值(17:34:55)
RTC_WaitForLastTask();
RTC_ExitConfigMode(); //退出配置模式(开始更新RTC寄存器)
BKP_WriteBackupRegister(BKP_DR1, bkp_data); //写备份数据
}
else
{
RTC_WaitForSynchro();
RTC_ITConfig(RTC_IT_SEC, ENABLE);
RTC_WaitForLastTask();
}
NVIC_Init(&nvic);
RTC_get();
}
stm32 rtc 实时时钟的更多相关文章
- stm32——RTC实时时钟
stm32——RTC实时时钟 一.关于时间 2038年问题 在计算机应用上,2038年问题可能会导致某些软件在2038年无法正常工作.所有使用UNIX时间表示时间的程序都将将受其影响,因为它们以自19 ...
- 第43章 RTC—实时时钟
第43章 RTC—实时时钟 全套200集视频教程和1000页PDF教程请到秉火论坛下载:www.firebbs.cn 野火视频教程优酷观看网址:http://i.youku.com/fireg ...
- 教你在树莓派使用上RTC实时时钟,不用再担心断电后时间归零的问题,开机后自动同步RTC时钟!!!
准备工作:1.系统建议使用官方最新的镜像文件 2.RTC时钟模块板(I2C接口)建议使用DS1307时钟模块,或者RTC时钟模块RTC时钟模块: 大家知道arduino的电平是5V,树莓派是3.3V, ...
- 第43章 RTC—实时时钟—零死角玩转STM32-F429系列
第43章 RTC—实时时钟 全套200集视频教程和1000页PDF教程请到秉火论坛下载:www.firebbs.cn 野火视频教程优酷观看网址:http://i.youku.com/fireg ...
- RTC实时时钟驱动
RTC(Real-Time Clock)实时时钟为操作系统提供了一个可靠的时间,并且在断电的情况下,RTC实时时钟也可以通过电池供电,一直运行下去. RTC通过STRB/LDRB这两个ARM指令向CP ...
- RTC实时时钟
作者:宋老师,华清远见嵌入式学院讲师. 1.1 RTC介绍 在 一个嵌入式系统中,通常采用RTC 来提供可靠的系统时间,包括时分秒和年月日等,而且要求在系统处于关机状态下它也能够正常工作(通常采用后备 ...
- RTC实时时钟-备份区域BKP--原理讲解
RTC(Real Time Clock):实时时钟 BCD码:用4位2进制来表示10以内的十进制的形式. RTC的时钟源:LSE(32.768KHZ).HSE_RTC.LSI.经过一个精密校准(RTC ...
- 【iCore3 双核心板】例程十:RTC实时时钟实验——显示日期和时间
实验指导书及代码包下载: http://pan.baidu.com/s/1jHuZcnc iCore3 购买链接: https://item.taobao.com/item.htm?id=524229 ...
- 【iCore4 双核心板_ARM】例程十:RTC实时时钟实验——显示时间和日期
实验现象: 核心代码: int main(void) { /* USER CODE BEGIN 1 */ RTC_TimeTypeDef sTime; RTC_DateTypeDef sDate; ; ...
随机推荐
- linux计划任务以某个用户身份执行
# Example of job definition: # .---------------- minute (0 - 59) # | .------------- hour (0 - 23) # ...
- java构造方法前加void有什么作用
构造方法前面是没有任何返回符,不能加任何返回类型,包括void.一个构造方法一旦加了void,那么这个就不是构造方法了,变成了一个普通的方法.至于你程序出现的情况,是这样的.任何一个Java类,如果你 ...
- 【C#设计模式3】工厂方法模式
一.引言 在简单工厂模式中讲到简单工厂模式的缺点,有一点是——简单工厂模式系统难以扩展,一旦添加新产品就不得不修改简单工厂方法,这样就会造成简单工厂的实现逻辑过于复杂,然而本专题介绍的工厂方法模式可以 ...
- 【WPS单元格】汉字转拼音的方法
昨晚休息的时候,赵 sir发来消息,突然有急事,需要把大批量的单元格汉字名字转换为拼音.迅粗略搜了下百度,发现office Excel 是很方便的,而赵 sir电脑装的是wps.百度了下,发现关于WP ...
- 码云clone提示“you do not have permission to pull from the repository”
使用git进行项目下载,换了电脑,配置了账号和邮箱后,pull一个私有项目的时候,出现如下问题: 原因分析: 由于没有设置Gitee的SSH公钥.生成公钥和配置公钥的办法,可以参考Gitee帮助里面的 ...
- 查询父节点parentNode
示例 1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 25 26 27 28 29 30 <!DOCTYPE htm ...
- oracle数据库数据转储最好方式(数据库表、数据结构和数据一并导出)
导入:使用plsql:Tools --> Import Tables --> SQL Inserts 得到的为sql文件,在转储的过程中当导入另一个库的时候老是报 “表或视图不存在” ...
- eclipse界面
Eclipse工作空间的基本配置 A:行号的显示和隐藏 显示:在代码区域的最左边的空白区域,右键 -- Show Line Numbers即可. 隐藏:把上面的动作再做一次. B:字体大小及颜色 a: ...
- 基于springJDBC手写ORM框架
一.添加MySQLjar包依赖 二.结构 三.文件内容 (一).bean包 1.ColumnInfo.java 2.javaFiledInfo.java 3.TableInfo.java 4.Conf ...
- Python异常 --Python
一.常见的异常类型 FileNotFoundError:找不到指定文件的异常 NameError:未声明或者未初始化对象 BaseException:所有异常的基类 二.异常处理语句 1.try... ...