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