本帖最后由 springvirus 于 2018-6-26 10:45 编辑
【已解决】需要按下板子上的RTC-WAKEUP按键,RTC才正常工作
调试了下NUC505的RTC,遇到些问题
NUC505BSPV3.02.000中rtc.c的RTC_Open()
对RTC->INIT写入RTC_INIT_KEY后,读出第0位的ACTIVE总是0,直到超时,再次写入后,还是超时,原因不明
对于RTC->SYNC也是一样的情况
哪位童鞋弄过这块,一起来说说
代码如下
void RTC_Open (S_RTC_TIME_DATA_T *sPt)
{
xxxxxxxxx;
if((RTC->INIT & RTC_INIT_ACTIVE_Msk)!= RTC_INIT_ACTIVE_Msk)
{
RTC->INIT = RTC_INIT_KEY;
while((RTC->INIT & RTC_INIT_ACTIVE_Msk) != RTC_INIT_ACTIVE_Msk)
{
/* Waiting for RTC settings stable */
while(i32delay--)
{
if((RTC->INIT & RTC_INIT_ACTIVE_Msk) == RTC_INIT_ACTIVE_Msk)
break;
}
i32delay = 1000;
RTC->INIT = RTC_INIT_KEY;
}
i32delay = 1000;
RTC_SyncReg();
}
xxxxxxxxxx;
}
void RTC_SyncReg(void)
{
uint32_t u32i = 0, u32Wait = 0;
u32Wait = RTC->SYNC & RTC_SYNC_SYNC_Msk;
while(u32Wait!=RTC_SYNC_SYNC_Msk)
{
u32Wait = RTC->SYNC & RTC_SYNC_SYNC_Msk;
u32i++;
if(u32i > 500000)
break;
}
}
|