RTC实时时钟
Posted 老虎不开窍
tags:
篇首语:本文由小常识网(cha138.com)小编为大家整理,主要介绍了RTC实时时钟相关的知识,希望对你有一定的参考价值。
STM32 的实时时钟(RTC)是一个独立的定时器。STM32 的 RTC 模块拥有一组连续计数的计数器,在相应软件配置下,可提供时钟日历的功能。修改计数器的值可以重新设置系统当前的时间和日期。
RTC 模块和时钟配置系统(RCC_BDCR 寄存器)是在后备区域,即在系统复位或从待机模式唤醒后 RTC 的设置和时间维持不变。但是在系统复位后,会自动禁止访问后备寄存器和 RTC,以防止对后备区域(BKP)的意外写操作。所以在要设置时间之前, 先要取消备份区域(BKP)写保护。
RTC主要由两个部分组成:
- APB1接口。用于连接APB总线。包含16位寄存器
- RTC核心。由一组可编程计数器组成。分为两个模块:1. 预分频模块。2. 32位可编程计数器模块。
RTC 内核完全独立于 RTC APB1 接口,而软件是通过 APB1 接口访问 RTC 的预分频值、计数器值和闹钟值的。但是相关可读寄存器只在 RTC APB1 时钟进行重新同步的 RTC 时钟的上升沿被更新,RTC 标志也是如此。这就意味着,如果 APB1 接口刚刚被开启之后,在第一次的内部寄存器更新之前,从 APB1 上读出的 RTC 寄存器值可能被破坏了(通常读到 0)。因此,若在读取 RTC 寄存器曾经被禁止的 RTC APB1 接口,软件首先必须等待 RTC_CRL 寄存器的 RSF位(寄存器同步标志位,bit3)被硬件置 1。
Stm32_Clock_Init(9); //?μí3ê±?óéè??
uart_init(72,9600); //′??ú13?ê??ˉ?a9600
LED_Init(); //3?ê??ˉó?LEDá??óμ?ó2?t?ó?ú
usmart_dev.init(72); //3?ê??ˉUSMART
LCD_ShowString(30,50,200,16,16,"WarShip STM32 ^_^");
LCD_ShowString(30,70,200,16,16,"USMART TEST");
LCD_ShowString(30,90,200,16,16,"[email protected]");
LCD_ShowString(30,110,200,16,16,"2012/9/7");
以上是关于RTC实时时钟的主要内容,如果未能解决你的问题,请参考以下文章