此后每分钟的第15秒闹钟A会触发一次,每小时的0分30秒闹钟B会触发一次,具体串口输出信息如下图所示 按下WK_UP按键可以翻转备份寄存器RTC_BKP_DR0内存储的值,当备份寄存器RTC_BKP_DR0的值为1时,复位之后RTC的时间不会重置为0; 而当备份寄存器RTC_BKP_DR0的值为0时,复位之后RTC的时间会被重新初始化为0:0:0...
#define RTC_BKP_DR14 ((uint32_t)0x0000000E) #define RTC_BKP_DR15 ((uint32_t)0x0000000F) #define RTC_BKP_DR16 ((uint32_t)0x00000010) #define RTC_BKP_DR17 ((uint32_t)0x00000011) #define RTC_BKP_DR18 ((uint32_t)0x00000012) #define RTC_BKP_DR19 ((uint32_t)0x00000013) ...
BKP 是位于后备区域的,BKP 里主要有数据寄存器、控制寄存器、状态寄存器和 RTC 时钟校准寄存器这些东西,其中数据寄存器是主要部分,用来存储数据的,每个数据寄存器都是 16 位的,也就是,一个数据寄存器可以存 2 个字节,那对于中容量和小容量的设备,里面有 DR1、DR2、一直到 DR10 总共 10 个数据寄存器,那一个寄存...
位5 BYPSHAD:旁路影子寄存器 (Bypass the shadow registers) 0:日历值(从 RTC_SSR、RTC_TR 和 RTC_DR 读取时)取自影子寄存器,该影子寄存器 每两个 RTCCLK 周期更新一次。 1:日历值(从 RTC_SSR、RTC_TR 和 RTC_DR 读取时)直接取自日历计数器。 注意:如果 APB1 时钟的频率低于 7 倍的 RTCCLK 频率,...
HAL_RTCEx_BKUPWrite(&RTC_Handler,RTC_BKP_DR0,0X5050);//标记已经初始化过了}return 0;}该函数用来初始化 RTC 配置以及日期时钟,但是只在第一次的时候设置时间,以后如果重新上电/复位都不会再进行时间设置了(前提是备份电池有电),在第一次配置的时候,我们是按照上面介绍的 RTC 初始化步骤调用函数(HAL_...
RTC_DR 是日历日期影子寄存器。只能在初始化模式下对该寄存器执行写操作。 位23:20 YT[3:0]:年份的十位(BCD 格式)(Year tens in BCD format) 位19:16 YU[3:0]:年份的个位(BCD 格式)(Year units in BCD format) 位15:13 WDU[2:0]:星期几的个位 (Week day units) ...
由于篇幅所限,rtc.c 中的代码,我们不全部贴出了,这里针对几个重要的函数,进行简要说明,首先是 RTC_Init,其代码如下://实时时钟配置//初始化 RTC 时钟,同时检测时钟是否工作正常//BKP->DR1 用于保存是否第一次配置的设置//返回 0:正常//其他:错误代码u8 RTC_Init(void)//时钟周期设置(有待观察,看...
19、tion */RTC_Configuration();Time_Adjust(); BKP_WriteBackupRegister(BKP_DR1, 0xA4A5); /*这句语句千千万万不可以丢,因为掉电或复位后RTC的中断允许位为会被恢复到默认值,而不会像RTC其他的配置位掉电后也会保持不变,如果我们不是第一次使用RTC,上电后系统不会运行上面的if句,如果再没有下面的开...
//BKP->DR1用于保存是否第一次配置的设置 //返回0:正常 //其他:错误代码 u8 RTC_Init( void ){...
根据下图RTC_PRLL寄存器说明部分公式,如果PRL[19:0]值为32767,则计数器的时钟频率为1HZ,得到的即是周期为1秒钟的信号。十六进制7FFF换成十进制是32767。 图6:RTC_PRLL寄存器 STM32F103提供了4个用于操作BKP的寄存器,如下表所示: 表2:BKP相关寄存器 其他寄存器详细的描述在这里不做具体的介绍,大家可以参考目录:“第...