你好,
在示例代码中,我看到了这个函数,我想在调用它时,它会在一段延迟后执行分配给它的函数。我通过查看邻近报告器示例代码追溯了如何实现这一点,但我无法让它工作。有什么文件可以让我查到更多的信息吗?(我看了一遍,但什么也没找到)
谢谢,基姆
地狱Kim,我已经要求SW团队进行一些反馈,并一旦我在App_Timer_Set函数的描述中有答案,就会回复您的疑声。它在网上的SW文档中没有详细信息..BR JE\u对话框
金,
app_timer_set未执行延迟函数,而是发送延迟消息。因此,你是MURENERGEN的处理程序。
要使计时器工作:1) 在app\u default\u状态下的app\u task\u handlers.h中添加处理程序。{APP\u MY\u TIMER,(ke\u msg\u func\t)APP\u MY\u TIMER\u handler},2)实施处理程序int app_my_timer_handler(ke_msg_id_t const msgid,void const*参数,任务id常量目标id,Keu任务\u id \u t const src \u id){/ **在这里延迟函数* /返回(已消耗的消息);}
{APP\u MY\u TIMER,(ke\u msg\u func\t)APP\u MY\u TIMER\u handler},
int app_my_timer_handler(ke_msg_id_t const msgid,void const*参数,任务id常量目标id,Keu任务\u id \u t const src \u id){/ **在这里延迟函数* /返回(已消耗的消息);}
3) 调用应用程序计时器集ke_timer_set(app_my_timer,task_app,100);// 100是1秒请注意,App_Timer_Set具有10毫秒的准确性。
ke_timer_set(app_my_timer,task_app,100);// 100是1秒
约翰内斯
嗨,金姆,有关此计时器的详细信息,请参阅以下文档(在本网站上):RW-BLE内核功能规范,从第14页开始。最好的祝福,
对话蓝牙支持团队
你好,在RW-BLE内核功能规范1.1第7.5.1章中,描述说,
作废keu timer\u set(keu msg\u id\u t const timer\u id,keu task\u id\u t const task,uint16\u t const delay);该功能首先取消计时器如果存在,那么它会创建一个新的计时器。计时器可以是单次或周期性的,即它每个触发后会自动设置。
我没有弄清楚如何配置定时器一拍或赛季。我没有看到任何带有ke_timer_set的一拍或定期的遥远。你能告诉我吗?非常感谢。-李杰森
我不搜索文件RW-BLE内核功能规范,Canyou给了我一个网址吗?
你好RandyYu,
您可以在支持网站上的文档选项卡中的配置文件和API文档部分中找到文档,这是链接http://support.dialog.com/resource/rw ble内核函数。。。.
谢谢你的对话
据我所知,计时器文档在很多地方都很不完整:-没有用于将计时器设置为单次或周期的参数。-keu timer\u active的描述是错误的:“此函数从计时器队列中弹出第一个计时器,并通过发送内核消息通知相应的任务。如果定时器是定期的,则会再次设置;如果它是单次,则计时器被释放。该功能也检查下一个计时器和如果它们已过期或即将过期,请对其进行处理。“。它根本就不这样做。它只是检查计时器是否处于活动状态,其他什么都不检查。-keu timer\u clear的描述是错误的:“此函数搜索由其计时器和任务标识符标识的计时器元素。如果发现,则停止并释放,否则返回错误消息。“。函数返回void,因此如果找不到计时器,它不会返回错误消息。(您可以简单地使用keu timer\u active来查看它是否不存在)。
一个非常重要的注意事项:一旦计时器超时并被触发,一条消息就会被放入消息队列的末尾,计时器就会被删除。这意味着,如果在消息在消息队列中且尚未处理时运行keu timer\u active,则返回false;如果运行keu timer\u clear,则不会发生任何事情;如果运行keu timer\u set,则会启动一个新的计时器,这意味着稍后将首先接收第一条消息,并且在触发计时器之后,你会收到下一条信息。
因此,如果您只是想要一个周期计时器:启动它一次,在计时器消息处理程序的末尾,只需启动一个新的计时器。
你好,乔奇姆我做了一个计时器,当它生成了一个计时器消息时,它会自动停止。如果我不重新开始,它就不会触发又来了。是的好像是个一次性计时器。但是你说“如果你运行ke_timer_clear,那就没有什么会发生”。现在,如果我启动一个计时器,我想在触发一个消息之前停止它,怎么做。
很清楚。非常感谢。
我们使用清晰的功能,但也使用全局标志变量来检查它是否应该运行,因为清除功能是不够的。
大家好,
这里有些人似乎掌握了计时器。所以我需要你的帮助。
我试图实现一个定时器,使LED闪烁时,设备连接。我听了你的解释,但我面临一个问题,我不明白:定时器工作时,延长/深度睡眠模式是没有启用,但当我启动延长,发光二极管发疯。
有什么我需要了解的吗?在接近示例中,LED以这种方式管理,它有效......
提前致谢 !
嗨matthieu,我仍然试图弄清楚app_timer_set如何完全适用于扩展或深度睡眠模式。但是,我想知道你是否也考虑到下面。
UINT8_T FLAG_LED __Attribute __((部分(“保留_MEM_AREA0”),ZERO_INIT));;int app_my_timer_handler(ke_msg_id_t const msgid,void const*参数,任务id常量目标id,Keu任务\u id \u t const src \u id){
app_timer_set(app_my_timer,task_app,100);// 1000ms.
if(flag_led == 1){标志灯=0;GPIO\ U设置激活(GPIO\ U BAT\ U LED\ U端口、GPIO\ U BAT\ U LED\ U引脚);}其他的{flag_led = 1;GPIO\ U SetInactive(GPIO\ U BAT\ U LED\ U端口、GPIO\ U BAT\ U LED\ U引脚);}返回(已消耗的消息);}
上面的代码,当扩展或深入,你不应该期望50%的LED闪烁占空比,因为外围电源关闭,LED将关闭,如果你的LED是由对话框GPIO供电。
谢谢你的帮助。我实施了您推荐的内容,但我仍然在活动模式和扩展睡眠模式之间具有不同的行为。
马特
嗨Matt,其中一支球队会给你一个电话走过你所看到的问题。
BR JE\u对话框
嗨,杰,
你能验证一下应用程序定时器设置的准确性吗?约翰内斯说,10毫秒的精度为1秒,百分比或1分钟这样的较长时间如何?
谢谢
所以最小的单位是10ms??用微秒计时需要什么?
地狱Kim,我已经要求SW团队进行一些反馈,并一旦我在App_Timer_Set函数的描述中有答案,就会回复您的疑声。它在网上的SW文档中没有详细信息..
BR JE\u对话框
金,
app_timer_set未执行延迟函数,而是发送延迟消息。因此,你是MURENERGEN的处理程序。
要使计时器工作:
1) 在app\u default\u状态下的app\u task\u handlers.h中添加处理程序。
{APP\u MY\u TIMER,(ke\u msg\u func\t)APP\u MY\u TIMER\u handler},
2)实施处理程序
int app_my_timer_handler(ke_msg_id_t const msgid,
void const*参数,
任务id常量目标id,
Keu任务\u id \u t const src \u id)
{
/ **在这里延迟函数* /
返回(已消耗的消息);
}
3) 调用应用程序计时器集
ke_timer_set(app_my_timer,task_app,100);// 100是1秒
请注意,App_Timer_Set具有10毫秒的准确性。
约翰内斯
嗨,金姆,
有关此计时器的详细信息,请参阅以下文档(在本网站上):
RW-BLE内核功能规范,从第14页开始。
最好的祝福,
对话蓝牙支持团队
你好,
在RW-BLE内核功能规范1.1第7.5.1章中,描述说,
作废keu timer\u set(keu msg\u id\u t const timer\u id,keu task\u id\u t const task,uint16\u t const delay);
该功能首先取消计时器如果存在,那么它会创建一个新的计时器。计时器可以是单次或周期性的,即它
每个触发后会自动设置。
我没有弄清楚如何配置定时器一拍或赛季。我没有看到任何带有ke_timer_set的一拍或定期的遥远。
你能告诉我吗?
非常感谢。
-
李杰森
我不搜索文件RW-BLE内核功能规范,Canyou给了我一个网址吗?
你好RandyYu,
您可以在支持网站上的文档选项卡中的配置文件和API文档部分中找到文档,这是链接http://support.dialog.com/resource/rw ble内核函数。。。.
谢谢你的对话
据我所知,计时器文档在很多地方都很不完整:
-没有用于将计时器设置为单次或周期的参数。
-keu timer\u active的描述是错误的:“此函数从计时器队列中弹出第一个计时器,并通过发送内核消息通知相应的任务。
如果定时器是定期的,则会再次设置;如果它是单次,则计时器被释放。该功能也检查下一个计时器和
如果它们已过期或即将过期,请对其进行处理。“。它根本就不这样做。它只是检查计时器是否处于活动状态,其他什么都不检查。
-keu timer\u clear的描述是错误的:“此函数搜索由其计时器和任务标识符标识的计时器元素。如果发现,则停止并
释放,否则返回错误消息。“。函数返回void,因此如果找不到计时器,它不会返回错误消息。(您可以简单地使用keu timer\u active来查看它是否不存在)。
一个非常重要的注意事项:一旦计时器超时并被触发,一条消息就会被放入消息队列的末尾,计时器就会被删除。这意味着,如果在消息在消息队列中且尚未处理时运行keu timer\u active,则返回false;如果运行keu timer\u clear,则不会发生任何事情;如果运行keu timer\u set,则会启动一个新的计时器,这意味着稍后将首先接收第一条消息,并且在触发计时器之后,你会收到下一条信息。
因此,如果您只是想要一个周期计时器:启动它一次,在计时器消息处理程序的末尾,只需启动一个新的计时器。
你好,乔奇姆
我做了一个计时器,当它生成了一个计时器消息时,它会自动停止。
如果我不重新开始,它就不会触发又来了。是的好像是个一次性计时器。
但是你说“如果你运行ke_timer_clear,那就没有什么会发生”。
现在,如果我启动一个计时器,我想在触发一个消息之前停止它,怎么做。
很清楚。非常感谢。
我们使用清晰的功能,但也使用全局标志变量来检查它是否应该运行,因为清除功能是不够的。
大家好,
这里有些人似乎掌握了计时器。所以我需要你的帮助。
我试图实现一个定时器,使LED闪烁时,设备连接。我听了你的解释,但我面临一个问题,我不明白:定时器工作时,延长/深度睡眠模式是没有启用,但当我启动延长,发光二极管发疯。
有什么我需要了解的吗?在接近示例中,LED以这种方式管理,它有效......
提前致谢 !
嗨matthieu,
我仍然试图弄清楚app_timer_set如何完全适用于扩展或深度睡眠模式。
但是,我想知道你是否也考虑到下面。
UINT8_T FLAG_LED __Attribute __((部分(“保留_MEM_AREA0”),ZERO_INIT));;
int app_my_timer_handler(ke_msg_id_t const msgid,
void const*参数,
任务id常量目标id,
Keu任务\u id \u t const src \u id)
{
app_timer_set(app_my_timer,task_app,100);// 1000ms.
if(flag_led == 1)
{
标志灯=0;
GPIO\ U设置激活(GPIO\ U BAT\ U LED\ U端口、GPIO\ U BAT\ U LED\ U引脚);
}
其他的
{
flag_led = 1;
GPIO\ U SetInactive(GPIO\ U BAT\ U LED\ U端口、GPIO\ U BAT\ U LED\ U引脚);
}
返回(已消耗的消息);
}
上面的代码,当扩展或深入,你不应该期望50%的LED闪烁占空比,因为外围电源关闭,LED将关闭,如果你的LED是由对话框GPIO供电。
你好,
谢谢你的帮助。
我实施了您推荐的内容,但我仍然在活动模式和扩展睡眠模式之间具有不同的行为。
马特
嗨Matt,其中一支球队会给你一个电话走过你所看到的问题。
BR JE\u对话框
嗨,杰,
你能验证一下应用程序定时器设置的准确性吗?约翰内斯说,10毫秒的精度为1秒,百分比或1分钟这样的较长时间如何?
谢谢
所以最小的单位是10ms??用微秒计时需要什么?