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条回答
萌萌的小x盆友
1楼-- · 2019-07-21 01:04
 精彩回答 2  元偷偷看……
萌萌的小x盆友
2楼-- · 2019-07-21 06:57
LRW 发表于 2018-10-15 23:10
我的是H7。还是不行的话只能帮顶了!

谢谢了, 这个问题已经解决, 直接弄寄存器就完事, 什么volatile的参数更新, 什么编译器优化...都不起作用; 我想可能是被OS或编译器给抺掉了这个操作; 不过你是维一能帮我解决问题的人, 所以最佳答案送给你

一周热门 更多>