17个员额/ 0个新员额
最后发表
离线
最后看到:7年2个月前
加入:2014-03-14 14:55
app_timer_set

你好,

在示例代码中,我看到了这个函数,我在想,当调用它时,它会在延迟后执行它被赋值的函数。我通过查看接近报告器示例代码追溯了如何做到这一点,但我无法让它工作。
有没有文件可以让我找到更多的信息?(我看了一遍,但什么也没找到)

谢谢,

JE_Dialog
离线
最后看到:2个月1个星期前
工作人员
加入:2013-12-05 14:02
地狱金,我问了这个

地狱Kim,我已经要求SW团队进行一些反馈,并一旦我在App_Timer_Set函数的描述中有答案,就会回复您的疑声。它在网上的SW文档中没有详细信息..
BR JE_Dialog

Johannes.steensma
离线
最后看到:2个月1个星期前
加入:2014-04-29十六
金,

金,

app_timer_set未执行延迟函数,而是发送延迟消息。因此,你是MURENERGEN的处理程序。

让计时器工作:
1)在app_task_handlers.h中添加app_default_state的handler。

(ke_msg_func_t) app_my_timer_handler}, {APP_MY_TIMER

2)实施处理程序

int app_my_timer_handler(ke_msg_id_t const msgid,
空白const *参数,
ke_task_id_t const dest_id,
ke_task_id_t const src_id)

/ **在这里延迟函数* /
返回(KE_MSG_CONSUMED);

3)调用app_timer_set

ke_timer_set(app_my_timer,task_app,100);// 100是1秒

请注意,App_Timer_Set具有10毫秒的准确性。

约翰内斯

AK_Dialog
离线
最后看到:6个月23小时前
工作人员
加入:2013-12-16 15:49
嗨,金姆,

嗨,金姆,
更多关于这个定时器的信息可以在以下文档中找到(在这个网站上):
RW-BLE内核功能规范,从第14页开始。
最好的祝福,

对话蓝牙支持团队

ejong69.
离线
最后看到:2年3个月前
加入:2014-06-23 07:11
你好,

你好,
在RW-BLE内核功能规范1.1的7.5.1章中,描述如下:

Void ke_timer_set(ke_msg_id_t const timer_id, ke_task_id_t const task, uint16_t const delay);
该功能首先取消计时器如果存在,那么它会创建一个新的计时器。计时器可以是单次或周期性的,即它
每个触发后会自动设置。

我没有弄清楚如何配置定时器一拍或赛季。我没有看到任何带有ke_timer_set的一拍或定期的遥远。
你能让我知道吗?
谢谢你!
-
杰森·李

RandyYu
离线
最后看到:3年1个月前
加入:2015-01-28 08:49
我不搜索文件RW

我不搜索文件RW-BLE内核功能规范,Canyou给了我一个网址吗?

MT_dialog
离线
最后看到:5个月2个星期前
工作人员
加入:2015-06-08 11:34
嗨RandyYu,

嗨RandyYu,

你可以在支持站点的文档选项卡的Profiles & API文档部分找到该文档,这里是链接http://support.dialog-semiconductor.com/resource/rw-ble-kernel-functiona..。

由于MT_dialog

Joacimwe.
离线
最后看到:一年九个月前
格鲁鲁
加入:2014-01-14 06:45
据我所知,计时器

据我所知,计时器文档在很多地方都很糟糕:
—没有参数设置一次性定时器或定时定时器。
ke_timer_active的描述是错误的:“这个函数从计时器队列中弹出第一个计时器,并通过发送内核消息通知相应的任务。
如果定时器是定期的,则会再次设置;如果它是单次,则计时器被释放。该功能也检查下一个计时器和
如果过期或即将过期,请处理。它根本就不会那样做。它只是检查计时器是否激活,而不是其他。
- ke_timer_clear的描述是错误的:“这个函数搜索由它的计时器和任务标识符标识的计时器元素。如果找到,它将被停止
释放,否则返回一个错误消息。该函数返回void,因此如果没有找到计时器,它不会返回错误消息。(您可以简单地使用ke_timer_active查看它是否不存在)。

一个非常重要的注意事项:一旦计时器超时并被触发,将在消息队列的末尾放置一条消息并删除计时器。这意味着如果你运行ke_timer_active当消息队列中的消息和没有处理,它将返回false,如果你运行ke_timer_clear,什么都不会发生,如果你运行ke_timer_set,一个新的定时器将晚些时候开始这意味着你将先收到第一个消息,和计时器三角后,你会收到下一条信息。

因此,如果您只是想要一个周期性计时器:启动它一次,并在计时器消息处理程序的末尾启动一个新的计时器。

滑轨
离线
最后看到:6年1个月前
专家
加入:2014-08-12 08:01
嗨Joacimwe

嗨Joacimwe
我做了一个计时器,当它生成了一个计时器消息时,它就会自动停止。
如果我不重新开始,它就不会再次触发。这似乎是一个一次性的计时器。
但是你说“如果你运行ke_timer_clear,那就没有什么会发生”。
现在,如果我启动一个计时器,我想在触发消息之前停止它,该怎么做。

ejong69.
离线
最后看到:2年3个月前
加入:2014-06-23 07:11
很明显。谢谢你!

很明显。谢谢你!

Joacimwe.
离线
最后看到:一年九个月前
格鲁鲁
加入:2014-01-14 06:45
我们使用明确的功能但是

我们使用清晰的功能,但也使用全局标志变量来检查它是否应该运行,因为清除功能是不够的。

马修安东尼
离线
最后看到:4年8月前
专家
加入:2014-01-14事故
大家好,

大家好,

这里有些人似乎很会计时。所以我需要你的帮助。

我尝试实现一个定时器,使LED闪烁时,设备连接。我听了你的解释,但我遇到了一个我不理解的问题:当延长/深度睡眠模式没有启用时,计时器会工作,但当我激活延长时,LED就会发疯。

有什么我需要了解的吗?在接近示例中,LED以这种方式管理,它有效......

提前致谢 !

ejong69.
离线
最后看到:2年3个月前
加入:2014-06-23 07:11
嗨matthieu,

嗨matthieu,
我仍然试图弄清楚app_timer_set如何完全适用于扩展或深度睡眠模式。
但是,我想知道你是否也考虑下面。

UINT8_T FLAG_LED __Attribute __((部分(“保留_MEM_AREA0”),ZERO_INIT));;
int app_my_timer_handler(ke_msg_id_t const msgid,
空白const *参数,
ke_task_id_t const dest_id,
ke_task_id_t const src_id)

app_timer_set(app_my_timer,task_app,100);// 1000ms.

if(flag_led == 1)

flag_led = 0;
GPIO_SetActive(GPIO_BAT_LED_PORT, GPIO_BAT_LED_PIN);

其他的

flag_led = 1;
GPIO_SetInactive (GPIO_BAT_LED_PORT GPIO_BAT_LED_PIN);

返回(KE_MSG_CONSUMED);

使用以上代码,当EXTENDED或DEEP时,你不应该期望LED闪烁50%占空比,因为外设电源下降,如果LED从Dialog GPIO供电,LED将关闭。

马修安东尼
离线
最后看到:4年8月前
专家
加入:2014-01-14事故
你好,

你好,

谢谢你的帮助。
我实施了您推荐的内容,但我仍然在活动模式和扩展睡眠模式之间具有不同的行为。

马特

JE_Dialog
离线
最后看到:2个月1个星期前
工作人员
加入:2013-12-05 14:02
嗨马特,其中一个团队将会

嗨Matt,其中一支球队会给你一个电话走过你所看到的问题。

BR JE_Dialog

亚历克斯·罗
离线
最后看到:6个月前1年
专家
加入:2014-02-28 19:16
嗨我,

嗨我,

你能验证app_timer_set的准确性吗?约翰内斯说10ms的精度是1秒,百分比呢,或者是更长的时间,比如1分钟?

谢谢

Yassin.bennaceur.
离线
最后看到:6年2个星期前
加入:2015-04-10 15:32
所以最小的单位是10毫秒

最小的单位是10ms ??我需要用多少微秒来使用计时器?