CH582 RTC更新的问题

无标题.png在项目中需要进行RTC时间更新,允许蓝牙断开的情况下,请问TMOS_TimerInit(0)这个程序需要在什么位置调用,我在关机的任务事件中 断开蓝牙并更新了RTC,再次开机,手机可以搜索到设备,但不能连接。

蓝牙部分的函数重新调用就可以了。具体到更新RTC时间后,按照该函数重新配置即可:

image.png



void Systemshutdown(FunctionalState s)

{

    uint16_t Tyear,Tmon,Tday,Thour,Tmin,Tsec ;

    if(s == DISABLE)

    {

        tmos_stop_task(Peripheral_TaskID,SBP_PERIODIC_EVT);

        tmos_stop_task(Peripheral_TaskID,SBP_READ_RSSI_EVT);

        tmos_stop_task(Peripheral_TaskID,HAL_KEY_EVENT);

        tmos_stop_task(Peripheral_TaskID,HAL_USART_EVENT);


        tmos_stop_task(halTaskID, HAL_SIMRTC_EVENT);


        Advertising_set_enable(DISABLE);


        GAPRole_TerminateLink(peripheralConnList.connHandle);


        PRINT("peripheral 主动断开\r\n");


        HAL_KeyInit(ENABLE);


        SimRTC_GetTime(&Tyear, &Tmon, &Tday, &Thour, &Tmin,&Tsec);      //软件时钟,用于显示

        RTC_InitTime(Tyear, Tmon, Tday, Thour, Tmin,Tsec);              //将时间更新到RTC中


        TMOS_TimerInit(0);

    }

    else

    {

        tmos_set_event(Peripheral_TaskID,SBP_PERIODIC_EVT);

        tmos_set_event(Peripheral_TaskID,SBP_READ_RSSI_EVT);

        tmos_set_event(Peripheral_TaskID,HAL_KEY_EVENT);

        tmos_set_event(Peripheral_TaskID,HAL_USART_EVENT);


        tmos_set_event(halTaskID, HAL_SIMRTC_EVENT);


        RTC_GetTime(&Tyear,&Tmon, &Tday, &Thour, &Tmin, &Tsec);


        SimRTC_Init(Tyear, Tmon, Tday, Thour, Tmin, Tsec);          //读取RTC的时间并更新到软件时钟中


        Advertising_set_enable(ENABLE);

    }

}

你指的蓝牙部分是哪些参数呢?我将Peripheral_Init内的多个参数设置程序都执行了一次,还是有问题,请帮我再看看

1726037845525801.jpg

1726037845130915.jpg



直接看搜索到的广播,是否为可连接的广播,如果是不可连接,说明蓝牙的状态被修改,则需要查看打印,看看是否advertising,且与正常的流程日志相同。

在修改时间后,可以接收蓝牙断开的情况下,直接将蓝牙这部分的初始化都重新调用。

image.png


只有登录才能回复,可以选择微信账号登录