金牌会员
 
- 积分
- 1625
- 金钱
- 1625
- 注册时间
- 2014-7-11
- 在线时间
- 285 小时
|
3金钱
最近在调试RTC时钟,在完成初始化后设置了一次,好用
但是在程序运行时再重新设置就不好用了
要吗不反应,,要么设置后全是00
请问是咋回事 查帖子说是设置
if (BKP_ReadBackupRegister(BKP_DR1) != 0x5050) //′óÖ¸¶¨μÄo󱸼Ä′æÆ÷ÖD¶á3öêy¾Y:¶á3öáËóëD′èëμÄÖ¸¶¨êy¾Y2»Ïàoõ
{
RCC_APB1PeriphClockCmd(RCC_APB1Periph_PWR | RCC_APB1Periph_BKP, ENABLE); //ê1ÄüPWRoíBKPíaéèê±Öó
PWR_BackupAccessCmd(ENABLE); //ê1Äüo󱸼Ä′æÆ÷·ÃÎê
BKP_DeInit(); //¸′λ±¸·YÇøóò
RCC_LSEConfig(RCC_LSE_ON); //éèÖÃía2¿μíËù¾§Õñ(LSE),ê1óÃíaéèμíËù¾§Õñ
while((RCC_GetFlagStatus(RCC_FLAG_LSERDY) == RESET)&&(temp<=250)) //¼ì2éÖ¸¶¨μÄRCC±ê־λéèÖÃóë·ñ,μè′yμíËù¾§Õñ¾íD÷
{
temp++;
Delay_Ms(10);
}
if(temp>=250)return 1;//3õê¼»ˉê±Öóê§°ü,¾§ÕñóDÎêìa
RCC_RTCCLKConfig(RCC_RTCCLKSource_LSE); //éèÖÃRTCê±Öó(RTCCLK),Ñ¡ÔñLSE×÷ÎaRTCê±Öó
RCC_RTCCLKCmd(ENABLE); //ê1ÄüRTCê±Öó
RTC_WaitForLastTask(); //μè′y×î½üò»′ζÔRTC¼Ä′æÆ÷μÄD′2ù×÷íê3é
RTC_WaitForSynchro(); //μè′yRTC¼Ä′æÆ÷í¬2½
RTC_ITConfig(RTC_IT_SEC, ENABLE); //ê1ÄüRTCÃëÖD¶Ï
RTC_WaitForLastTask(); //μè′y×î½üò»′ζÔRTC¼Ä′æÆ÷μÄD′2ù×÷íê3é
RTC_EnterConfigMode();/// ÔêDíÅäÖÃ
RTC_SetPrescaler(32767); //éèÖÃRTCÔ¤·ÖÆμμÄÖμ
RTC_WaitForLastTask(); //μè′y×î½üò»′ζÔRTC¼Ä′æÆ÷μÄD′2ù×÷íê3é
RTC_Set(2016,9,25,12,0,0); //éèÖÃê±¼ä
RTC_ExitConfigMode(); //íË3öÅäÖÃÄ£ê½
BKP_WriteBackupRegister(BKP_DR1, 0X5050); //ÏòÖ¸¶¨μÄo󱸼Ä′æÆ÷ÖDD′èëóû§3ìDòêy¾Y
}
else//Ïμí3¼ìDø¼Æê±
{
RTC_WaitForSynchro(); //μè′y×î½üò»′ζÔRTC¼Ä′æÆ÷μÄD′2ù×÷íê3é
RTC_ITConfig(RTC_IT_SEC, ENABLE); //ê1ÄüRTCÃëÖD¶Ï
RTC_WaitForLastTask(); //μè′y×î½üò»′ζÔRTC¼Ä′æÆ÷μÄD′2ù×÷íê3é
}
RTC_NVIC_Config();//RCTÖD¶Ï·Ö×ééèÖÃ
RTC_Get();//¸üDÂê±¼ä
return 0; //ok
但是看程序没问题的,请问是咋回事
|
|