RTC 计数器寄存器——RTC 闹钟寄存器(RTC_ALRH、RTC_ALRL) 作用:RTC时钟中断控制寄存器 该寄存器也是由 2 个 16 位的寄存器组成 RTC_ALRH 和 RTC_ALRL,也就是32位,当可编程计数器的值与RTC_ALR中的32位值相等时,即触发一个闹钟事件,并且产生RTC闹钟中断。 BKP备份寄存器 备份寄存器是42个16位的寄存器。...
RTCCLK经过RTC_DIV预分频,RTC_PRL设置预分频系数,然后得到TR_CLK时钟信号,我们一般设置其周期为1s,RTC_CNT计数器计数,假如1970设置为时间起点为0s,通过当前时间的秒数计算得到当前的时间。RTC_ALR是设置闹钟时间,RTC_CNT计数到RTC_ALR就会产生计数中断, RTC_Second为秒中断,用于刷新时间, RTC_Overflow是溢出中断。
闹钟寄存器RTC_ALR: RTC 还有一个闹钟寄存器 RTC_ALR,用于产生闹钟。系统时间按 TR_CLK 周期累加并与存储在 RTC_ALR 寄存器中的可编程时间相比较,如果 RTC_CR 控制寄存器中设置了相应允许位,比较匹配时将产生一个闹钟中断 由于RTC内核完全独立与APB1接口,软件只能通过APB1的接口访问RTC的预分频值、计数器值和闹钟...
/** * @brief 等待RTC寄存器与APB时钟同步 (RTC_CNT, RTC_ALR and RTC_PRL) * @note 在APB时钟复位或停止后,在对RTC寄存器的任何操作前,必须调用本函数 * @param None * @retval None */ void RTC_WaitForSynchro(void) { /* 清除 RSF 寄存器位 */ RTC->CRL &= (uint16_t)~RTC_FLAG_RSF; /...
的寄存器组成 RTC_ALRH 和 RTC_ALRL。总共也是 32 位,用来标记闹钟产生的时间(以秒为 单位),...
RTC_ITConfig(RTC_FLAG_ALR,ENABLE); } void RTC_AWU_SET(void) { //启用PWR和BKP的时钟(from APB1) RCC_APB1PeriphClockCmd(RCC_APB1Periph_PWR | RCC_APB1Periph_BKP, ENABLE); //后备域解锁 PWR_BackupAccessCmd(ENABLE); RTC_ITConfig(RTC_IT_SEC, DISABLE); ...
RTC_ITConfig(RTC_FLAG_ALR,ENABLE); } void RTC_AWU_SET(void) { //启用PWR和BKP的时钟(from APB1) RCC_APB1PeriphClockCmd(RCC_APB1Periph_PWR | RCC_APB1Periph_BKP, ENABLE); //后备域解锁 PWR_BackupAccessCmd(ENABLE); RTC_ITConfig(RTC_IT_SEC, DISABLE); ...
闹钟寄存器:RTC_ALR,这个 ALR 也是一个 32 位的寄存器,和上面这个 CNT 是等宽的 他的作用就是设置闹钟,我们可以在 ALR 写一个秒数,设定闹钟,当 CNT 的值跟 ALR 设定的闹钟值一样时,就代表闹钟响了,就会产生 RTC_Alarm 闹钟信号,通往右边的中断系统,在中断函数里,你可以执行相应的操作; ...
计数器按照 TR_CLK 周期累加外,同时与用户设定的 RTC 闹钟寄存(RTC_ALR)的时间比较,一致则产生「闹钟标志」,如果此时开启中断,则会触发中断。 二、RTC操作 1、读RTC寄存器 由于RTC核心部件位于后备区域,虽然RTC的寄存器读写由APB1接口完成,但是APB1接口在系统电源掉电时是停止工作的。由于 RTC 核心部件和 APB1...
配置RTC_CR 寄存器中的 ALRAE 位使能可编程闹钟功能。当该位为 1,并且配置的 RTC_ALRMAR寄存器的值同当前日历一致时, RTC_ISR 寄存器中的 ALRAF 位会置 1。同时配置 RTC_CR 寄存器中的ALRAIE 位等于 1 时,会产生闹钟中断输出。 配置RTC_CR 寄存器中的位 OSEL[1:0]等于 1, ALRAF 连接到 RTC_ALARM ...