F4的RTC设置日期时是不是写入很慢?

2019-07-20 07:59发布

如题,F4的RTC设置时间和设置日期是用两个函数实现的,操作设置日期时明显感觉同步的时间比较长,大约4、5秒的样子。
友情提示: 此问题已得到解决,问题已经关闭,关闭后问题禁止继续编辑,回答。
11条回答
solo
2019-07-20 16:16

回复【3楼】正点原子:
---------------------------------

RTC的初始化是跟板子的历程里一样的。


 case 5://【ok】写入STM32 RTC
{
s8 w;//计算中可能产生负值
u8 c,y,m,d;//计算星期使用

//蔡勒公式计算某年某月某日的星期
c = 21-1;//世纪,2001~2100为21世纪
y = t_box[0].dat;//年
m = t_box[1].dat;//月,3~14
d = t_box[2].dat;//日

if(m < 3)//如果是1、2,要看做去年的13、14月来计算
{
y -= 1;
m += 12;
}

w = y+(u8)(y/4)+(u8)(c/4)-2*c+(u8)(26*(m+1)/10)+d-1;
if(w < 0) w = w%7+7;//当出现负值时取模运算
else w %= 7;
if(w == 0) w = 7;

xSemaphoreTake(xQueueHandle_RTC, 0xffffffff);

RTC_DateStructure.RTC_Year    = t_box[0].dat;//1970-2106
RTC_DateStructure.RTC_Month   = t_box[1].dat;//0-11
RTC_DateStructure.RTC_Date    = t_box[2].dat;//(1:1-31)(2:1-28)(3:1-31)(4:1-30)(5:1-31)(6:1-30)(7:1-31)(8:1-31)(9:1-30)(10:1-31)(11:1-30)(12:1-31)
RTC_DateStructure.RTC_WeekDay = w;//1~7
RTC_SetDate(RTC_Format_BIN, &RTC_DateStructure);

RTC_TimeStructure.RTC_Hours   = t_box[3].dat;//0-23
RTC_TimeStructure.RTC_Minutes = t_box[4].dat;//0-59
RTC_TimeStructure.RTC_Seconds = t_box[5].dat;//0-59
RTC_SetTime(RTC_Format_BIN, &RTC_TimeStructure);

xSemaphoreGive(xQueueHandle_RTC);

printf("星期%d ",w);
                
return;
}//break;

1、在里面计算了星期;2、有多线程信号量保护。
问题:时间和日期是同时写入的,但是奇怪的是如果我只修改了时间生效速度没问题;如果我修改了日期和时间,时间立刻生效,日期有相当大的延迟(4~5s)。如果屏蔽星期的计算了信号量的保护,结果和现在没有区别。

一周热门 更多>