OS 获取时间,日期不更新

2019-07-20 05:41发布

本帖最后由 萌萌的小x盆友 于 2018-10-14 15:42 编辑

OS 获取时间,日期不更新.使用 HAL_RTC_GetTime(); 获取时间, 在HTTP 中正常;
但在 任务中更新缓慢, 执行多次, 响应一次. 已在获取前置一打印, 检测是否到位, 打印次数正常, 10S产生17-18次, 但时间更新却只有5-7S一次;
实在无解, 未使用Keil优化;


/*****************************************************************/
/*** Time_任务函数 ***/

void  Time_TASK(void  *p_arg)
{
        OS_ERR  err;
        static u32 i[2] = {0,0};   //i[0]_秒维护(0.5S); i[1]_日期维护(60S);
        p_arg = p_arg;
        CPU_SR_ALLOC();

        while(1)
        {
OS_CRITICAL_ENTER();             //进入临界区
        /*** Hardware_BSP 时间日期 维护段 ***/
        if(i[0]<OSTimeGet(&err)-(OSCfg_TickRate_Hz*0.5))    //0.5S
        {
                i[0] = OSTimeGet(&err);
                printf("T");
                HAL_RTC_GetTime(&_hRTC, &__Board_Hardware.time, RTC_FORMAT_BIN);  //RTC 时间(自动更新_0.5S)
        }
        if(i[1]<OSTimeGet(&err)-(OSCfg_TickRate_Hz*5))       //5S
        {
                i[1] = OSTimeGet(&err);
                HAL_RTC_GetDate(&_hRTC, &__Board_Hardware.date, RTC_FORMAT_BIN);  //RTC 日期(自动更新_5S)
        }
OS_CRITICAL_EXIT();            //退出临界区
                OSTimeDlyHMSM(0,0,0, 100, OS_OPT_TIME_PERIODIC, &err);   //周期 100ms
        }
}


友情提示: 此问题已得到解决,问题已经关闭,关闭后问题禁止继续编辑,回答。
该问题目前已经被作者或者管理员关闭, 无法添加新回复
8条回答
LRW
1楼-- · 2019-07-20 11:32
 精彩回答 2  元偷偷看……
萌萌的小x盆友
2楼-- · 2019-07-20 13:41
本帖最后由 萌萌的小x盆友 于 2018-10-14 15:49 编辑

求原子大神, 求各路英雄好汉帮忙解决一下    @正点原子

萌萌的小x盆友
3楼-- · 2019-07-20 16:32
平台: UCOSIII+F767....
时间更新放在: SysTick_Handler() 正常, 放任务就无法连续更新;
萌萌的小x盆友
4楼-- · 2019-07-20 17:37
 精彩回答 2  元偷偷看……
LRW
5楼-- · 2019-07-20 17:42
 精彩回答 2  元偷偷看……
萌萌的小x盆友
6楼-- · 2019-07-20 22:18
LRW 发表于 2018-10-14 18:35
HAL库好像要时间和日期一起获取,放上下行试试。以前我遇到过时间不更新的,就是因为没获取日期(只用到时 ...

这样好像不太对吧, HTTP Server服务可是没关的哦, 也在获取时间, 而且更新还正常, 也是单独获取

一周热门 更多>