Presentation is loading. Please wait.

Presentation is loading. Please wait.

《手把手教你学STM32》 主讲人 :正点原子团队 硬件平台:正点原子STM32开发板 版权所有:广州市星翼电子科技有限公司 淘宝店铺:

Similar presentations


Presentation on theme: "《手把手教你学STM32》 主讲人 :正点原子团队 硬件平台:正点原子STM32开发板 版权所有:广州市星翼电子科技有限公司 淘宝店铺:"— Presentation transcript:

1 淘宝店铺:http://eboard.taobao.com 技术论坛:www.openedv.com
《手把手教你学STM32》 主讲人 :正点原子团队 硬件平台:正点原子STM32开发板 版权所有:广州市星翼电子科技有限公司 淘宝店铺: 技术论坛: 开源电子网 公众平台:“正点原子” 官方网站: 联系电话: ddddd ALIENTEK 淘宝店铺: 技术论坛:

2 淘宝店铺:http://eboard.taobao.com 技术论坛:www.openedv.com
《手把手教你学STM32》 RTC实时时钟原理+BKP 适用平台 STM32F1xx 开发板 (正点原子) STM32F4xx 开发板 (正点原子) ddddd 淘宝店铺: 技术论坛:

3 淘宝店铺:http://eboard.taobao.com 技术论坛:www.openedv.com
目录 RTC实时时钟特征与原理 1 BKP备份寄存器原理 2 RTC常用寄存器+库函数讲解 3 淘宝店铺: 技术论坛:

4 淘宝店铺:http://eboard.taobao.com 技术论坛:www.openedv.com
RTC实时时钟 参考资料: 探索者STM32F4开发板 《STM32F4开发指南-库函数版本》-第20章 RTC实时时钟实验 STM32F4xx官方资料: 《STM32F4中文参考手册 》-第23章 实时时钟(RTC) 淘宝店铺: 技术论坛:

5 淘宝店铺:http://eboard.taobao.com 技术论坛:www.openedv.com
RTC实时时钟特征与原理 RTC (Real Time Clock):实时时钟 RTC是个独立的BCD定时器/计数器。RTC 提供一个日历时钟,两个可编程闹钟中断,以及一个具有中断功能的周期性可编程唤醒标志。RTC还包含用于管理低功耗模式的自动唤醒单元。 两个32位寄存器包含二进码十进制格式(BCD)的秒,分钟,小时(12或24小时制),星期几,日期,月份和年份。此外,还可以提供二进制的亚秒值。 系统可以自动将月份的天数补偿为28,29(闰年),30,31天。并且还可以进行夏令时补偿。 淘宝店铺: 技术论坛:

6 淘宝店铺:http://eboard.taobao.com 技术论坛:www.openedv.com
RTC实时时钟特征与原理 其他32位寄存器还包含可编程的闹钟亚秒,秒,分钟,小时,星期几和日期。 此外,还可以使用数字校准功能对晶振精度的偏差进行补偿。 上电复位后,所有的RTC寄存器都会受到保护,以防止可能的非正常写访问。 RTC模块和时钟配置是在后备区域,即在系统复位或者待机模式唤醒后RTC的设置和时间维持不变,只要后备区域供电正常,RTC将一直工作下去。但是在系统复位之后会自动禁止访问后备区域和RTC,以防止意外操作,所以在设置时间之前,要先取消后备区域写保护。 淘宝店铺: 技术论坛:

7 淘宝店铺:http://eboard.taobao.com 技术论坛:www.openedv.com
RTC实时时钟特征与原理 RTC特征 淘宝店铺: 技术论坛:

8 淘宝店铺:http://eboard.taobao.com 技术论坛:www.openedv.com
RTC实时时钟特征与原理 淘宝店铺: 技术论坛:

9 淘宝店铺:http://eboard.taobao.com 技术论坛:www.openedv.com
RTC实时时钟特征与原理 RTC工作原理框图 淘宝店铺: 技术论坛:

10 淘宝店铺:http://eboard.taobao.com 技术论坛:www.openedv.com
RTC原理 RTC时钟源 淘宝店铺: 技术论坛:

11 淘宝店铺:http://eboard.taobao.com 技术论坛:www.openedv.com
2.BKP备份寄存器 RTC BKP备份寄存器 提醒:一共有20个32位备份寄存器。常用来保存一些系统配置信息和相关标志位。 淘宝店铺: 技术论坛:

12 淘宝店铺:http://eboard.taobao.com 技术论坛:www.openedv.com
3.RTC常用寄存器 RTC相关常用寄存器 RTC时间寄存器(RTC_TR) RTC日期寄存器(RTC_DR) RTC亚秒寄存器(RTC_SSR) RTC控制寄存器(RTC_CR) RTC初始化和状态寄存器(RTC_ISR) RTC预分频寄存器(RTC_PRER) RTC唤醒定时器寄存器(RTC_WUTR) RTC闹钟A寄存器(RTC_ALRMAR) RTC闹钟A亚秒寄存器(RTC_ALRMASSR) RTC闹钟B寄存器( RTC_ALRMBR) RTC闹钟B亚秒寄存器(RTC_ALRMBSSR) RTC写保护寄存器(RTC_WPR) RTC备份寄存器(RTC_BKPxR) RTC时间戳时间寄存器(RTC_TSTR) RTC时间戳日期寄存器(RTC_TSDR) RTC时间戳亚秒寄存器(RTC_TSSSR) 淘宝店铺: 技术论坛:

13 淘宝店铺:http://eboard.taobao.com 技术论坛:www.openedv.com
3.RTC常用寄存器 RTC预分频寄存器(RTC_PRER) 淘宝店铺: 技术论坛:

14 淘宝店铺:http://eboard.taobao.com 技术论坛:www.openedv.com
3.RTC常用寄存器 RTC时间寄存器(RTC_TR) BCD码:亦称二进码十进数。用4位二进制数来表示1位十进制数中的0~9这10个数码。 淘宝店铺: 技术论坛:

15 淘宝店铺:http://eboard.taobao.com 技术论坛:www.openedv.com
3.RTC常用寄存器 RTC日期寄存器(RTC_DR) 淘宝店铺: 技术论坛:

16 淘宝店铺:http://eboard.taobao.com 技术论坛:www.openedv.com
3.RTC常用寄存器 RTC亚秒寄存器(RTC_SSR) 淘宝店铺: 技术论坛:

17 淘宝店铺:http://eboard.taobao.com 技术论坛:www.openedv.com
3.RTC常用寄存器 RTC控制寄存器(RTC_CR) 每个位的含义,看中文参考手册CR寄存器描述 淘宝店铺: 技术论坛:

18 淘宝店铺:http://eboard.taobao.com 技术论坛:www.openedv.com
3.RTC常用寄存器 RTC初始化和状态寄存器(RTC_ISR) 每个位的含义,看中文参考手册CR寄存器描述 淘宝店铺: 技术论坛:

19 淘宝店铺:http://eboard.taobao.com 技术论坛:www.openedv.com
3.RTC常用寄存器 RTC唤醒定时器寄存器(RTC_WUTR) 淘宝店铺: 技术论坛:

20 淘宝店铺:http://eboard.taobao.com 技术论坛:www.openedv.com
3.RTC常用寄存器 RTC闹钟A/B寄存器(RTC_ALRMAR/ RTC_ALRMBR) 闹钟A和B描述一致 淘宝店铺: 技术论坛:

21 淘宝店铺:http://eboard.taobao.com 技术论坛:www.openedv.com
3.RTC常用寄存器 RTC闹钟A/B亚秒寄存器(RTC_ALRMASSR/ RTC_ALRMBSSR) 闹钟A和B描述一致 淘宝店铺: 技术论坛:

22 淘宝店铺:http://eboard.taobao.com 技术论坛:www.openedv.com
3.RTC常用寄存器 RTC写保护寄存器(RTC_WPR) 淘宝店铺: 技术论坛:

23 淘宝店铺:http://eboard.taobao.com 技术论坛:www.openedv.com
RTC原理 RTC相关库函数讲解 库函数所在文件: stm32f4xx_rtc.c / stm32f4xx_rtc.h 淘宝店铺: 技术论坛:

24 淘宝店铺:http://eboard.taobao.com 技术论坛:www.openedv.com
RTC原理 RTC相关常用库函数讲解 ErrorStatus RTC_Init(RTC_InitTypeDef* RTC_InitStruct); ErrorStatus RTC_EnterInitMode(void); void RTC_ExitInitMode(void); ErrorStatus RTC_SetTime(uint32_t RTC_Format, RTC_TimeTypeDef* RTC_TimeStruct); void RTC_GetTime(uint32_t RTC_Format, RTC_TimeTypeDef* RTC_TimeStruct); uint32_t RTC_GetSubSecond(void); ErrorStatus RTC_SetDate(uint32_t RTC_Format, RTC_DateTypeDef* RTC_DateStruct); void RTC_GetDate(uint32_t RTC_Format, RTC_DateTypeDef* RTC_DateStruct); void RTC_SetAlarm(); void RTC_GetAlarm(); ErrorStatus RTC_AlarmCmd(uint32_t RTC_Alarm, FunctionalState NewState); void RTC_AlarmSubSecondConfig(uint32_t RTC_Alarm, uint32_t RTC_AlarmSubSecondValue, uint32_t RTC_AlarmSubSecondMask); uint32_t RTC_GetAlarmSubSecond(uint32_t RTC_Alarm); 淘宝店铺: 技术论坛:

25 淘宝店铺:http://eboard.taobao.com 技术论坛:www.openedv.com
RTC原理 RTC相关库函数讲解 RTC时钟源和时钟操作函数: void RCC_RTCCLKConfig(uint32_t CLKSource);//时钟源选择 void RCC_RTCCLKCmd(FunctionalState NewState)//时钟使能 RTC初始化函数 ErrorStatus RTC_Init(RTC_InitTypeDef* RTC_InitStruct); typedef struct { uint32_t RTC_HourFormat; //小时格式:24/12 uint32_t RTC_AsynchPrediv; //异步分频 系数 uint32_t RTC_SynchPrediv; //同步分频系数 }RTC_InitTypeDe 淘宝店铺: 技术论坛:

26 淘宝店铺:http://eboard.taobao.com 技术论坛:www.openedv.com
RTC原理 RTC日历配置相关函数 ErrorStatus RTC_SetTime(uint32_t RTC_Format, RTC_TimeTypeDef* RTC_TimeStruct); void RTC_GetTime(uint32_t RTC_Format, RTC_TimeTypeDef* RTC_TimeStruct); ErrorStatus RTC_SetDate(uint32_t RTC_Format, RTC_DateTypeDef* RTC_DateStruct); void RTC_GetDate(uint32_t RTC_Format, RTC_DateTypeDef* RTC_DateStruct); uint32_t RTC_GetSubSecond(void); 淘宝店铺: 技术论坛:

27 淘宝店铺:http://eboard.taobao.com 技术论坛:www.openedv.com
RTC原理 RTC闹钟相关函数 ErrorStatus RTC_AlarmCmd(uint32_t RTC_Alarm, FunctionalState NewState) void RTC_SetAlarm(uint32_t RTC_Format, uint32_t RTC_Alarm, RTC_AlarmTypeDef* RTC_AlarmStruct); void RTC_GetAlarm(uint32_t RTC_Format, uint32_t RTC_Alarm, void RTC_AlarmSubSecondConfig(uint32_t RTC_Alarm, uint32_t RTC_AlarmSubSecondValue, uint32_t RTC_AlarmSubSecondMask) uint32_t RTC_GetAlarmSubSecond(uint32_t RTC_Alarm); 淘宝店铺: 技术论坛:

28 淘宝店铺:http://eboard.taobao.com 技术论坛:www.openedv.com
RTC原理 RTC周期唤醒相关函数 void RTC_WakeUpClockConfig(uint32_t RTC_WakeUpClock); void RTC_SetWakeUpCounter(uint32_t RTC_WakeUpCounter); uint32_t RTC_GetWakeUpCounter(void); RTC_WakeUpCmd(DISABLE);//关闭WAKE UP RTC 中断配置以及状态相关函数 void RTC_ITConfig(uint32_t RTC_IT, FunctionalState NewState); FlagStatus RTC_GetFlagStatus(uint32_t RTC_FLAG); void RTC_ClearFlag(uint32_t RTC_FLAG); ITStatus RTC_GetITStatus(uint32_t RTC_IT); void RTC_ClearITPendingBit(uint32_t RTC_IT); 淘宝店铺: 技术论坛:

29 淘宝店铺:http://eboard.taobao.com 技术论坛:www.openedv.com
RTC原理 RTC相关约束函数 void RTC_WriteProtectionCmd(FunctionalState NewState);//取消写保护 ErrorStatus RTC_EnterInitMode(void);//进入配置模式,RTC_ISR_INITF位设置为1 void RTC_ExitInitMode(void)//退出初始化模式。 其他相关函数 uint32_t RTC_ReadBackupRegister(uint32_t RTC_BKP_DR); void RTC_WriteBackupRegister(uint32_t RTC_BKP_DR, uint32_t Data) void RTC_ITConfig(uint32_t RTC_IT, FunctionalState NewState); 淘宝店铺: 技术论坛:

30 淘宝店铺:http://eboard.taobao.com 技术论坛:www.openedv.com
RTC原理 RTC日历配置一般步骤 使能PWR时钟:RCC_APB1PeriphClockCmd(); ② 使能后备寄存器访问: PWR_BackupAccessCmd(); ③ 配置RTC时钟源,使能RTC时钟: RCC_RTCCLKConfig(); RCC_RTCCLKCmd(); 如果使用LSE,要打开LSE:RCC_LSEConfig(RCC_LSE_ON); ④ 初始化RTC(同步/异步分频系数和时钟格式):RTC_Init (); ⑤ 设置时间:RTC_SetTime (); ⑥设置日期:RTC_SetDate(); 淘宝店铺: 技术论坛:

31 淘宝店铺:http://eboard.taobao.com 技术论坛:www.openedv.com
RTC原理 RTC闹钟配置一般步骤 RTC已经初始化好相关参数。 关闭闹钟:RTC_AlarmCmd(RTC_Alarm_A,DISABLE); 配置闹钟参数:RTC_SetAlarm(); 开启闹钟:RTC_AlarmCmd(RTC_Alarm_A,EABLE); 开启配置闹钟中断: RTC_ITConfig(); EXTI_Init(); NVIC_Init(); ⑤编写中断服务函数:RTC_Alarm_IRQHandler(); 淘宝店铺: 技术论坛:

32 淘宝店铺:http://eboard.taobao.com 技术论坛:www.openedv.com
RTC原理 RTC周期性自动唤醒配置一般步骤 RTC已经初始化好相关参数。 关闭WakeUp:RTC_WakeUpCmd(DISABLE); 配置WakeUp时钟分频系数/来源: RTC_WakeUpClockConfig(); 设置WakeUp自动装载寄存器: RTC_SetWakeUpCounter(); 使能WakeUp : RTC_WakeUpCmd( ENABLE); 开启配置闹钟中断: RTC_ITConfig(); EXTI_Init(); NVIC_Init(); ⑤编写中断服务函数: RTC_WKUP_IRQHandler(); 淘宝店铺: 技术论坛:

33 淘宝店铺:http://eboard.taobao.com 技术论坛:www.openedv.com
RTC原理 下一讲 讲解RTC实时时钟实验程序。 淘宝店铺: 技术论坛:

34 淘宝店铺:http://eboard.taobao.com 技术论坛:www.openedv.com
谢谢您对“正点原子”团队的支持 硬件平台:正点原子STM32开发板 版权所有:广州市星翼电子科技有限公司 淘宝店铺: 技术论坛: 淘宝店铺: 技术论坛:


Download ppt "《手把手教你学STM32》 主讲人 :正点原子团队 硬件平台:正点原子STM32开发板 版权所有:广州市星翼电子科技有限公司 淘宝店铺:"

Similar presentations


Ads by Google