5)设置 RTC 的分频,以及配置 RTC 时钟。 在开启了 RTC 时钟之后,我们要做的就是设置 RTC 时钟的分频数,通过 RTC_PRLH 和RTC_PRLL 来设置,然后等待 RTC 寄存器操作完成,并同步之后,设置秒钟中断。然后设置RTC 的允许配置位(RTC_CRH 的 CNF 位),设置时间(其实就是设置 RTC_CNTH 和 RTC_CNTL两个寄存器)。下面我们一一这些步骤用到的库函数: 在进行 RTC 配置之前首先要打开允许配置位(CNF),库函数是: RTC_EnterConfigMode();/// 允许配置 在配置完成之后,千万别忘记更新配置同时退出配置模式,函数是: RTC_ExitConfigMode();//退出配置模式,更新配置 设置 RTC 时钟分频数,库函数是: void RTC_SetPrescaler(uint32_t PrescalerValue); 然后是设置秒中断允许,RTC 使能中断的函数是: void RTC_ITConfig(uint16_t RTC_IT, FunctionalState NewState); 这个函数的第一个参数是设置秒中断类型,这些通过宏定义定义的。对于使能秒中断方法是: RTC_ITConfig(RTC_IT_SEC, ENABLE); //使能 RTC 秒中断 下一步便是设置时间了,设置时间实际上就是设置 RTC 的计数值,时间与计数值之间是需要换算的。库函数中设置 RTC 计数值的方法是: void RTC_SetCounter(uint32_t CounterValue)最后在配置完成之后 通过这个函数直接设置 RTC 计数值。 6)更新配置,设置 RTC 中断分组。 在设置完时钟之后,我们将配置更新同时退出配置模式,这里还是通过 RTC_CRH 的 CNF来实现。库函数的方法是: RTC_ExitConfigMode();//退出配置模式,更新配置 在退出配置模式更新配置之后我们在备份区域 BKP_DR1 中写入 0X5050 代表我们已经初始化过时钟了,下次开机(或复位)的时候,先读取 BKP_DR1 的值,然后判断是否是 0X5050 来决定是不是要配置。接着我们配置 RTC 的秒钟中断,并进行分组。 这个函数的第一个参数就是寄存器的标号了,这个是通过宏定义定义的。比如我们要往BKP_DR1 写入 0x5050,方法是: BKP_WriteBackupRegister(BKP_DR1, 0X5050); 同时,有写便有读,读取备份区域指定寄存器的用户数据的函数是: uint16_t BKP_ReadBackupRegister(uint16_t BKP_DR); 这个函数就很好理解了,这里不做过多讲解
|