你好,我想在我的应用程序中计算时间。我把iBeacon设置为每天2点~ 3点可连接。因此,我将使用计时器来计算当前时间。
我在位于arch_main.c中的schedule_while_ble_on中添加了一些代码
静态内联void schedule_while ble_on(void)
{
// BLE clock is enabled
而(ble_is_powered ())
{
//设置BLE事件结束。有条件的射频校准可以运行。
ble_evt_end_set uint8_t ble_evt_end_set = ke_event_get(KE_EVENT_BLE_EVT_END);
Uint32_t current_time = lld_evt_time_get ();
If ((current_time - last_time) > 1599){
/ / timer_second + +;
last_time =当前时间;
如果(GPIO_GetPinStatus (GPIO_PORT_2 GPIO_PIN_0))
GPIO_SetInactive (GPIO_PORT_2 GPIO_PIN_0);
其他的
GPIO_SetActive (GPIO_PORT_2 GPIO_PIN_0);
}
如果(current_time < last_time)
last_time = 0;
//执行消息和事件
rwip_schedule ();
.......
}
女士1600 * 0.625 = 1000毫秒。
我使用GPIO测量周期。但结果是,GPIO的高电平和低电平不等于1s。只有在启动期间,GPIO输出方波正好为1秒。
我需要帮助,谢谢。
设备:
嗨ustbzhangm,
强烈建议使用.app_on_ble_powered回调函数,不要试图修改SKD文件。lld_evt_time_get()函数将返回BLE定时器的值。如果您睡眠超过1秒,您所附加的代码将永远不会运行,因为永远不会输入If ((current_time - last_time) > 1599)。然后设备将安排一个BLE事件,并在那个时间醒来,所以当设备醒来时,它将通过您附加的代码,然后执行您编写的操作,比如切换GPIO。当设备处于睡眠模式有附加的代码永远不会运行,因为祝福计时器将永远不会恢复和定时器周期计数将总是超过1秒。之所以得到切换接近1秒启动时因为设备不会睡眠2秒,因此,您所附加的代码将继续运行和比较。
谢谢,PM_Dialog