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; ; ...
随机推荐
- git 关于Git每次进入都需要输入用户名和密码的问题解决
解决办法: git bash进入你的项目目录,输入: git config --global credential.helper store 然后你会在你本地生成一个文本,上边记录你的账号和密码.当然 ...
- (一)UML概览
类图
- react ant design TreeNode——树形菜单笔记
2017-12-04补充说明——树形菜单版本号2.x 设置默认该树形组件展开(默认展开所有树节点) 参考文档的写法: defaultExpandAll={true} //经过测试并不生效, 另外注意 ...
- iOS-UIButton分类扩展(封装)
UIButton+BackgroundColor.h #import <UIKit/UIKit.h> @interface UIButton (BackgroundColor) - (vo ...
- 搭建Android与多ble蓝牙设备并发通讯小框架
此框架支持多种不同类型的ble设备,同时连接.收发数据,互不干扰.比如APP同时连两个LED蓝牙灯.两个手环.一个蓝牙加热器,当然连接单个ble设备,或者只连接一种ble设备同样适用本框架. 前言 小 ...
- 报错Unsupported major.minor version 52.0的原因
原因分析 很明显是JDK版本不一致所导致的,,我们知道Java是支持向后编译的,也就是说,在低版本(如JDK6)上编译的class文件或者jar文件可以在高版本上(如JDK8)上编译通过,但这并不意味 ...
- @Value注入static属性
1. 给参数注入,执行set方法 public class SendMessageCenter { private static String message; private stat ...
- 洛谷 题解 P3627 【[APIO2009]抢掠计划】
图论 tarjan缩点+最短路 的一道题 tarjan求强连通分量(为以后缩点打下良好的基础) (如果不会tarjan的请点击这儿) 你需要的东西: (1).dfn[],表示这个点在dfs时是第几个被 ...
- chapter01图像基本操作
刚刚开始学习opencv,来记录一下自己的学习笔记,也向各位大牛虚心求教 一.图片的基本知识 只要是彩色的图片都有三个颜色通道,即RGB,用三个矩阵来表示. 三个矩阵的同一个坐标位置上的数值描述的是一 ...
- docker管理工具lazydocker
docker管理工具lazydocker 简介 这是一个为了能再终端中更方便管理docker的工具 项目地址 https://github.com/jesseduffield/lazydocker 安 ...