哪家建公司网站,wordpress加印章插件,网站建设协议书样本,大连建设工程信息网华宇凤凰城东侧市政管网配套工程目录 一、STM32F407内部RTC硬件框图#xff0c;主要由五大部分组成#xff1a;
二、硬件相关引脚
三、具体代码设置步骤
四、了解其它知识点 一、STM32F407内部RTC硬件框图#xff0c;主要由五大部分组成#xff1a; ① 时钟源
(1)LSE#xff1a;一般我们选择 LSE主要由五大部分组成
二、硬件相关引脚
三、具体代码设置步骤
四、了解其它知识点 一、STM32F407内部RTC硬件框图主要由五大部分组成 ① 时钟源
(1)LSE一般我们选择 LSE即外部 32.768KHz 晶振作为时钟源(RTCCLK)。外部晶振具有精度高的优点。
(2)HSE分频后的 HSE 可以作为备选使用的时钟源。
(3)LSILSI 是 STM32 芯片内部的低速 RC 振荡器频率约 32 KHz缺点是精度较低一般不使用。 ② 预分频器 预分配器RTC_PRER分为 2 个部分一个通过 RTC_PRER 寄存器的 PREDIV_A 位配置的 7 位异步预分频器。另一个通过 RTC_PRER 寄存器的 PREDIV_S 位配置的 15 位同步预分频器。 于是我们只需要设置 PREDIV_A0X7F即 128 分频PREDIV_S0XFF即 256 分频即可得到 1Hz(1秒) 的 Fck_spre用于更新日历。 ③ 时间和日期相关寄存器 该部分包括三个影子寄存器 RTC_SSR亚秒、 RTC_TR时间、 RTC_DR日期。实时时钟一般表示为时/分/秒/亚秒。RTC_TR 寄存器用于存储时/分/秒时间数据可读可写即可设置或者获取时间。RTC_DR 寄存器用于存储日期数据包括年/月/日/星期可读可写即可设置或者获取日期。RTC_SSR 寄存器用于存储亚秒级的时间这样我们可以获取更加精确的时间数据。 不过需要注意的是时间和日期都是以 BCD 码的格式存储的读出来要转换一下才可以得到十进制的数据。 亚秒的实现当影子RTC_SSR 寄存器递减到 0 的时候会使用 PREDIV_S 的值重新装载 PREDIV_S而PREDIV_S 一般为 255而影子RTC_SSR 寄存器递减的频率为前面7位异步分频器分频出来的频率为256Hz。这样我们得到亚秒时间的精度是 1/256 秒即 3.9ms 左右。 ④ 可编程闹钟 STM32F407 提供两个可编程闹钟闹钟 AALARM_A和闹钟 BALARM_B。通过RTC_CR 寄存器的 ALRAE 和 ALRBE 位置 1 来使能闹钟。当亚秒、秒、分、小时、日期分别与闹钟寄存器 RTC_ALRMASSR/RTC_ALRMAR 和 RTC_ALRMBSSR/RTC_ALRMBR 中的值匹配时则可以产生闹钟需要适当配置。本章我们将利用闹钟 A 产生闹铃即设置RTC_ALRMASSR 和 RTC_ALRMAR 即可。 ⑤ 周期性自动唤醒 STM32F407 的 RTC 不带秒钟中断了但是多了一个周期性自动唤醒功能。周期性唤醒功能由一个 16 位可编程自动重载递减计数器RTC_WUTR生成可用于周期性中断/唤醒。 二、硬件相关引脚
(1)LSE时钟(32.768kHz) PC14 和 PC15 可用作 GPIO 或 LSE 引脚
(2) VBAT要有电压1.65V~3.6V
(3) RTC其它相关引脚PC13 可用作 GPIO 或 RTC_AF1 引脚PI8 可用作 RTC_AF2 三、具体代码设置步骤
1、初始化 RTC (1) 在系统复位后会自动禁止访问后备寄存器和 RTC以防止对后备区域(BKP)的意外写操作。所以在要设置时间之前先要取消备份区域BKP写保护
(2) 初始化日期格式(HourFormat)RTC_PRER异步(AsynchPrediv 0x7F)和同步寄存器(SynchPrediv 0xFF)OutPut 用来选择要连接到 RTC_ALARM 输出的标志OutPutPolarity 用来设置 RTC_ALARM 的输出极性与 Output 成员变量配合使用OutPutType 用来设置 RTC_ALARM 的输出类型为开漏输出还是推挽输出与成员变量 OutPut 和 OutPutPolarity 配合使用。
(3) 读出bkr(0)寄存器的值判断是否被修改过如果修改过说明电池有重新上电要重新设置时间和日期。 2、配置WAKE UP中断,1秒钟中断一次 3、获取时间和日期 四、了解其它知识点
1、BKP的作用 当Vdd关闭时,这些寄存器由VBAT供电,因而系统复位时,这些寄存器不会复位,并且当器件在低功耗模式下工作时,寄存器的内容仍然有效。可以理解为只有后备电池不掉电备份寄存器的都不会恢复默认值用于判断电池是否掉过电如果掉过电需要重新设定时间。 常用例如RTC程序中我们向DR1写入0x5050开机读出寄存器值看是否有改变检测是否已经配置过RTC如果不是写入的值说明电池有掉过电需要重新设定时间和日期。 2、有些芯片自带的RTC会是有整个完整日历相关的寄存器(如GD32F407VET6)而有些只有一个秒计时器需要软件自己去做日历(如GD32F303VE) 3、无论器件状态如何运行模式、低功耗模式或处于复位状态只要电源电压保持在工作范围内 RTC 便不会停止工作。