如何使用lld_evt_time_get函数作为RTC

⚠️
大家好. .谢谢你来到论坛。令人兴奋的消息!我们现在正在转移到新的论坛平台,它将提供更好的功能,包含在主对话网站中。所有岗位和账户都已迁移。我们现在只接受新论坛的流量-请在上面发布任何新帖子//www.wsdof.com/support.我们将在未来几天修复bug /优化搜索和标记。
2个帖子/ 0个新
最后发表
ustbzhangm
离线
最后看到:5个月,3个星期前
加入:2015-08-24 07:50
如何使用lld_evt_time_get函数作为RTC

你好,我想在我的应用程序中计算时间。我把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秒。
我需要帮助,谢谢。

设备:
PM_Dialog
离线
最后看到:23小时50分钟前
工作人员
加入:2018-02-08 11:03
嗨ustbzhangm,

嗨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