配置RTC 寄存器 必须设置 RTC_CRL 寄存器中的 CNF 位 , 使 RTC 进入配置模式后 , 才能写入 RTC_PRL、RTC_CNT、 RTC_ALR 寄存器。 另外,对 RTC 任何寄存器的写操作,都必须在前一次写操作结束后进行。可以通过查询 RTC_CR 寄存器中的 RTOFF 状态位,判断 RTC 寄存器是否处于更新中。仅当 RTOFF 状态位是 1 ...
2、RTC控制寄存器低位(RTC_CRL) 此寄存器是RTC模块的一些标志位。第 0 位是秒钟标志位,我们在进入闹钟中断的时候,通过判断这位来决定是不是发生了秒钟中断,此位只能通过软件清除。第3位为寄存器同步标志位,结合RTC框图,只有当寄存器同步后,才可以修改RTC_CRH和RTC_CRL的寄存器的值,否则修改的值无效。第4位是配置...
如果 RTC_CR 控制寄存器中设置了相应允许位,比较匹配时将产生一个闹钟中断 由于RTC内核完全独立与APB1接口,软件只能通过APB1的接口访问RTC的预分频值、计数器值和闹钟值,相关的寄存器值是在APB1时钟进行重新同步的RTC上升沿被更新,所以在读取RTC寄存器曾经被禁止的APB1接口前,必须等待RTC_CRL寄存器的PSF位被置1。
必须设置RTC_CRL 寄存器中的CNF位 , 使RTC进入配置模式后 , 才能写 入RTC_PRL、RTC_CNT、 RTC_ALR寄存器。 另外,对RTC任何寄存器的写操作,都必须在前一次写操作结束后进行。可以通过查询RTC_CR寄存器中的RTOFF状态位,判断RTC寄存器是否处于更新中。仅当RTOFF状态位是’1’时,才可以写入RTC寄存器。
(3)进入配置模式:等待RTOFF位为1,设置CNF位为1。(RTC_CRL) (4)设置RTC寄存器:设置分频值、计数值等(RTC_PRL),一般先只设置分频值,CNT的设置独立。 (5)退出配置模式:清除CNF位,等待RTOFF 位为1(RTC_CRL)即配置完成。 4.RTC系统配置流程描述
(3)进入配置模式:等待RTOFF位为1,设置CNF位为1。(RTC_CRL) (4)设置RTC寄存器:设置分频值、计数值等(RTC_PRL),一般先只设置分频值,CNT的设置独立。 (5)退出配置模式:清除CNF位,等待RTOFF 位为1(RTC_CRL)即配置完成。 4.RTC系统配置流程描述
void RTC_ExitConfigMode(void);//退出配置模式:CRL位 CNF RTC同步函数: void RTC_WaitForLastTask(void);//等待上次操作完成:CRL位RTOFF void RTC_WaitForSynchro(void);//等待时钟同步:CRL位RSF RTC相关状态位获取清除函数: FlagStatus RTC_GetFlagStatus(uint16_t RTC_FLAG); ...
void RTC_EnterConfigMode(void);//允许RTC配置 :CRL位 CNF void RTC_ExitConfigMode(void);//退出配置模式:CRL位 CNF RTC同步函数: void RTC_WaitForLastTask(void);//等待上次操作完成:CRL位RTOFF void RTC_WaitForSynchro(void);//等待时钟同步:CRL位RSF ...
在配置前还必须将RTC_CRL寄存器里面的CNF位置1,进入配置模式,等待配置后,还要退出配置模式。 配置过程 1)查询RTOFF位,直到RTOFF的值变为‘1’ 2)置CNF为1,进入配置模式 3)对一个或多个RTC寄存器进行写操作 4)清除CNF标志位,退出配置模式 5)查询RTOFF,直到RTOFF变为1,才代表写操作完成 注意:只有当CNF标志...
// 进入配置模式,置CRL的CNF为1,进入配置模式 void RTC_EnterConfigMode(void); // 退出配置模式,把CNF位清零 void RTC_ExitConfigMode(void); // 获取计数器的值,用于获取时钟 uint32_t RTC_GetCounter(void); // 写入CNT的值,用于设置时间 void RTC_SetCounter(uint32_t CounterValue); ...