CC2640R2F手机和ble设备端时间同步

    首先 ble设备是一个arm嵌入式设备,rtc不会太准,默认时间是2000.故每天可能需要对设备进行校正设置。

    在调试的平台是手机android端,android手机默认时间是utc,那么就方便了,可以直接设置底层的rtc。


代码方面试下如下,

1.simpleBLEPeripheral.c文件中添加如下头文件

#include "UTC_Clock.h"

2.在需要实现地方调用

              uint32_t newTime = 0;
              //uint8_t time[4] = {0}; 
              uint32_t tmp = 0;
              OVVIProfile_GetParameter(OVVIPROFILE_CHAR1, nbOVVI_Char1); 
              tmp = nbOVVI_Char1[4];
              newTime = tmp << 24;
              tmp = nbOVVI_Char1[5];
              newTime |= tmp << 16;
              tmp = nbOVVI_Char1[6];
              newTime |= tmp << 8;
              tmp = nbOVVI_Char1[7];
              newTime |= tmp;                
                  
              UTC_setClock(newTime);
              Task_sleep(300000); //3S       
              newTime = UTC_getClock();
              time[0] = newTime >> 24;
              time[1] = newTime >> 16;
              time[2] = newTime >> 8;
              time[3] = newTime >> 0;
              OVVI_RF_Communication_data_Send(nbOVVI_Char1,time,4);
              OVVI_RF_Communication_ok_Send(nbOVVI_Char1);


以上做的就是收到设置时间指令后,

先设置一个android那边的大端utc的4个字节数据数据解析设置进rtc。

然后过三秒,在notify一个4个字节数据给到手机端。

手机写入的数据utc4个字节大端数据: 5B2B4C5C

手环隔了3s还是10s (忘记仿真时候设置3还是10s)notify回 手机的数据: 5B2B4C66

注意:

需要加入UTC_Clock.h 和 UTC_Clock.c进工程中。

且把这两个文件路径加到IAR编译路径中去。



你可能感兴趣的:(cts,gts,git等杂项)