RTC_WaitForSynchro(); //等待最近一次对RTC寄存器的写操作完成 RTC_ITConfig(RTC_IT_SEC, ENABLE); //使能RTC秒中断 RTC_WaitForLastTask(); //等待最近一次对RTC寄存器的写操作完成 } RTC_NVIC_Config();//RCT中断分组设置 RTC_Get();//更新时间 return 0; //ok }...
RTC_WaitForLastTask(); RTC_WaitForSynchro() ; // 9. 配置 RTC 预分频器,使得 RTC 秒周期为 1Hz RTC_SetPrescaler(32767); // RTC 预分频器值, 32.768kHz / 32768 = 1Hz // 7. 等待 RTC 时钟准备好 RTC_WaitForLastTask(); RTC_WaitForSynchro() ; } 做一版优化 第一次进入初始化函数的时候再配...
1,调用RCC_GetFlagStatus检测是上电复位还是按键复位,根据不同的复位情况在超级终端中打印出不同的调试信息(两种复位都不需要重新设置RTC里面的时间值); 2,调用RTC_WaitForSynchro等待APB1接口与RTC外设同步,上电后第一次通过APB1接口访问RTC时必须要等待同步; 3,同步完成后调用RTC_ITConfig()使能RTC外设的秒中断(...
RTC_WaitForSynchro();//等待RTC寄存器同步 具体的代码,库函数写的太多了,我会用CubeMx配置下,用HAL库写一个例程,几十行就可以解决RTC。 审核编辑:汤梓红
出现的现象:使用野火的RTC例程,在软件仿真时如果不需要配置,则程序会死在 RTC_WaitForSynchro() 函数中。而下载到硬件上时,有时候可以跑,有时候也会在该函数中死循环。可能的原因:首先,一定要确认是否使能了对后备寄存器和RTC的访问。系统复位后,对后备寄存器和RTC的访问被禁止,这是为了防止对后备区域(BKP...
RTC_WaitForSynchro(); //等待RTC寄存器同步 RTC_ITConfig(RTC_IT_SEC, ENABLE); //使能RTC秒中断 RTC_WaitForLastTask(); //等待最近一次对RTC寄存器的写操作完成 RTC_EnterConfigMode();//允许配置 //RTC_SetPrescaler(32767); //设置RTC预分频值,中断时间为1s ...
(ENABLE);//使能RTC时钟RTC_WaitForSynchro();//APB1时钟与RTC时钟同步RTC_WaitForLastTask();//等待操作完成//以下对RTC寄存器配置RTC_SetPrescaler(40000-1);//设置分频RTC_WaitForLastTask();//等待操作完成RTC_SetCounter(3600*HH+60*MM+SS);//设置初始时间RTC_WaitForLastTask();RTC_ITConfig(RTC_IT_SEC,...
RTC_WaitForSynchro();//等待RTC寄存器与APB时钟同步jQuery112402848145579433856_1660633089828 /* Wait until last write operation on RTC registers has finished */ RTC_WaitForLastTask(); /* 使能RTC的秒中断 */ RTC_ITConfig(RTC_IT_SEC, ENABLE);//在使能中断前,必须调用RTC_WaitForLastTask(); ...
(); //等待RTC寄存器同步,因为RTC时钟是低速的,内环时钟是高速的,所以要同步 RTC_WaitForSynchro(); //写寄存器之前要确保上一次RTC的操作完成 //下面这两条语句是开启RTC秒中断的函数,每过1秒钟产生一次中断,就进入了中断服务函数 RTC_ITConfig(RTC_IT_SEC, ENABLE);//使能RTC秒中断 RTC_WaitForLastTask();...