你好,
在示例代码中,我看到了这个功能,我想调用它时,它会执行它分配一个延迟后的功能。我已经追溯到了如何通过查看附近记者示例代码要做到这一点,但我无法得到它的工作。是否有一个文档在哪里可以找到更多信息?(我通过他们看,但找不到任何东西)
谢谢,金
地狱金,我已经向SW团队询问了一些反馈,一旦我对app_timer_set函数的描述有了答复,我就会回答你的问题。目前在线的SW文档中没有详细说明。BR JE_Dialog
金,
app_timer_set不是执行一个延迟函数,而是发送一个延迟消息。因此,您必须注册此消息的处理程序。
为了得到定时器的工作:1)在app_task_handlers.h在app_default_state添加处理程序。{APP_MY_TIMER,(ke_msg_func_t)app_my_timer_handler}2)实现处理程序Int app_my_timer_handler(ke_msg_id_t const msgid,无效常量* PARAM,ke_task_id_t常量DEST_ID,ke_task_id_t常量src_id){/**在这里执行延迟函数*/回报(KE_MSG_CONSUMED);}
{APP_MY_TIMER,(ke_msg_func_t)app_my_timer_handler}
Int app_my_timer_handler(ke_msg_id_t const msgid,无效常量* PARAM,ke_task_id_t常量DEST_ID,ke_task_id_t常量src_id){/**在这里执行延迟函数*/回报(KE_MSG_CONSUMED);}
3)调用app_timer_setke_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节描述说,
空隙ke_timer_set(ke_msg_id_t常量timer_id,ke_task_id_t const的任务,uint16_t const的延迟);如果计时器存在,函数首先取消它,然后创建一个新的计时器。计时器可以是一次性的,也可以是周期性的每次触发后都会自动再次设置。
我不知道如何配置定时器一次或周期dec。我没有看到任何参数的一次性或周期与ke_timer_set。你可以请让我知道?谢谢你。--杰森·李
我没有搜索文件RW-BLE内核功能规范,你能给我一个URL吗?
嗨RandyYu,
你可以在支持站点的文档选项卡的Profiles & API文档部分找到该文档,这里是链接HTTP://support.dialog-semiconductor.com/resource/rw-ble-kernel-functiona ...。
谢谢mt_dialog.
据我所知,计时器文档相当打破了很多地方:- 有定时器设置为一次性或周期性没有参数。- ke_timer_active的描述是错误的:“此功能通过发送内核消息从弹出的定时器队列,并通知相应的任务第一个计时器。如果定时器是周期性的,则重新设置;如果是一次,则释放计时器。该函数还检查下一个计时器和处理他们是否有过期或即将过期。“它没有做到这一点的。它只是检查是否计时器是活动的,没有别的。- ke_timer_clear的描述是错误的:“这由它的计时器和任务identifers identifed定时元件功能的搜索如果找到,则停止。中解脱出来,否则返回一个错误信息。“该函数返回void,因此如果没有发现计时器不会返回一条错误消息。(你可以简单地使用ke_timer_active,看它是否不存在)。
一个非常重要的注意事项:一旦定时器已超时和被解雇的消息被放在消息队列的末尾,定时器被删除。这意味着如果在该消息是在消息队列中,尚未处理的,它会返回false,如果你运行ke_timer_clear,什么都不会发生,你运行ke_timer_active,如果你运行ke_timer_set,一个新的计时器将启动,这意味着你以后将首先收到的第一条消息,以及定时器触发后,您将收到一条消息。
所以,如果你只是想一个周期定时器:启动一次,在定时器消息处理程序结束,刚开始一个新的计时器。
嗨Joacimwe我做一个定时器,它停止时自动生成了一个定时器消息。如果我不重新开始,也不会触发again.It似乎是一次性的定时器。但是你说过“如果你运行ke_timer_clear,什么都不会发生”。现在,如果我启动一个定时器,我想触发之前停止该消息,该怎么办呢。
很明显。谢谢你。
我们使用clear函数和一个全局标志变量来检查它是否应该运行,因为clear函数是不够的。
你好,
这里有些人似乎掌握了计时器。所以,我需要一些帮助你。
我试图实现一个计时器,以使LED闪烁的设备连接时。我跟你解释,但我面临的一个问题,我不明白:定时器工作时延长/未启用深度睡眠模式,但是当我激活扩展,LED的发疯。
有什么我需要知道的吗?在接近的例子中,LED是这样管理的,它工作…
提前感谢!
嗨,马修,我仍然试图弄清楚app_timer_set如何在EXTENDED或DEEP睡眠模式下工作。但是,不知你是否也考虑下面。
uint8_t flag_led __attribute__(((“retention_mem_area0”)部分,zero_init));;Int app_my_timer_handler(ke_msg_id_t const msgid,无效常量* PARAM,ke_task_id_t常量DEST_ID,ke_task_id_t常量src_id){
app_timer_set (APP_MY_TIMER TASK_APP 100);/ / 1000毫秒
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);}
有了上面的代码,时延长或深,你不应该期望的LED占空比50%闪烁,因为如果你的LED是从对话框GPIO供电的外设断电和LED指示灯将熄灭。
谢谢你的帮助。我执行了你的建议,但我仍然有不同的行为在主动模式和延长睡眠模式。
镭
嗨,马特,一个团队会给你打电话,告诉你你看到的问题。
BR JE_Dialog
嗨JE,
你可以验证app_timer_set的准确性?约翰尼斯说,10毫秒为1秒的精度,怎么样百分比或lomger时间像1分钟?
谢谢
这样的最小单位为10ms ??什么是我需要使用定时器在微秒?
地狱金,我已经向SW团队询问了一些反馈,一旦我对app_timer_set函数的描述有了答复,我就会回答你的问题。目前在线的SW文档中没有详细说明。
BR JE_Dialog
金,
app_timer_set不是执行一个延迟函数,而是发送一个延迟消息。因此,您必须注册此消息的处理程序。
为了得到定时器的工作:
1)在app_task_handlers.h在app_default_state添加处理程序。
{APP_MY_TIMER,(ke_msg_func_t)app_my_timer_handler}
2)实现处理程序
Int app_my_timer_handler(ke_msg_id_t const msgid,
无效常量* PARAM,
ke_task_id_t常量DEST_ID,
ke_task_id_t常量src_id)
{
/**在这里执行延迟函数*/
回报(KE_MSG_CONSUMED);
}
3)调用app_timer_set
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节描述说,
空隙ke_timer_set(ke_msg_id_t常量timer_id,ke_task_id_t const的任务,uint16_t const的延迟);
如果计时器存在,函数首先取消它,然后创建一个新的计时器。计时器可以是一次性的,也可以是周期性的
每次触发后都会自动再次设置。
我不知道如何配置定时器一次或周期dec。我没有看到任何参数的一次性或周期与ke_timer_set。
你可以请让我知道?
谢谢你。
--
杰森·李
我没有搜索文件RW-BLE内核功能规范,你能给我一个URL吗?
嗨RandyYu,
你可以在支持站点的文档选项卡的Profiles & API文档部分找到该文档,这里是链接HTTP://support.dialog-semiconductor.com/resource/rw-ble-kernel-functiona ...。
谢谢mt_dialog.
据我所知,计时器文档相当打破了很多地方:
- 有定时器设置为一次性或周期性没有参数。
- ke_timer_active的描述是错误的:“此功能通过发送内核消息从弹出的定时器队列,并通知相应的任务第一个计时器。
如果定时器是周期性的,则重新设置;如果是一次,则释放计时器。该函数还检查下一个计时器和
处理他们是否有过期或即将过期。“它没有做到这一点的。它只是检查是否计时器是活动的,没有别的。
- ke_timer_clear的描述是错误的:“这由它的计时器和任务identifers identifed定时元件功能的搜索如果找到,则停止。
中解脱出来,否则返回一个错误信息。“该函数返回void,因此如果没有发现计时器不会返回一条错误消息。(你可以简单地使用ke_timer_active,看它是否不存在)。
一个非常重要的注意事项:一旦定时器已超时和被解雇的消息被放在消息队列的末尾,定时器被删除。这意味着如果在该消息是在消息队列中,尚未处理的,它会返回false,如果你运行ke_timer_clear,什么都不会发生,你运行ke_timer_active,如果你运行ke_timer_set,一个新的计时器将启动,这意味着你以后将首先收到的第一条消息,以及定时器触发后,您将收到一条消息。
所以,如果你只是想一个周期定时器:启动一次,在定时器消息处理程序结束,刚开始一个新的计时器。
嗨Joacimwe
我做一个定时器,它停止时自动生成了一个定时器消息。
如果我不重新开始,也不会触发again.It似乎是一次性的定时器。
但是你说过“如果你运行ke_timer_clear,什么都不会发生”。
现在,如果我启动一个定时器,我想触发之前停止该消息,该怎么办呢。
很明显。谢谢你。
我们使用clear函数和一个全局标志变量来检查它是否应该运行,因为clear函数是不够的。
你好,
这里有些人似乎掌握了计时器。所以,我需要一些帮助你。
我试图实现一个计时器,以使LED闪烁的设备连接时。我跟你解释,但我面临的一个问题,我不明白:定时器工作时延长/未启用深度睡眠模式,但是当我激活扩展,LED的发疯。
有什么我需要知道的吗?在接近的例子中,LED是这样管理的,它工作…
提前感谢!
嗨,马修,
我仍然试图弄清楚app_timer_set如何在EXTENDED或DEEP睡眠模式下工作。
但是,不知你是否也考虑下面。
uint8_t flag_led __attribute__(((“retention_mem_area0”)部分,zero_init));;
Int app_my_timer_handler(ke_msg_id_t const msgid,
无效常量* PARAM,
ke_task_id_t常量DEST_ID,
ke_task_id_t常量src_id)
{
app_timer_set (APP_MY_TIMER TASK_APP 100);/ / 1000毫秒
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);
}
有了上面的代码,时延长或深,你不应该期望的LED占空比50%闪烁,因为如果你的LED是从对话框GPIO供电的外设断电和LED指示灯将熄灭。
你好,
谢谢你的帮助。
我执行了你的建议,但我仍然有不同的行为在主动模式和延长睡眠模式。
镭
嗨,马特,一个团队会给你打电话,告诉你你看到的问题。
BR JE_Dialog
嗨JE,
你可以验证app_timer_set的准确性?约翰尼斯说,10毫秒为1秒的精度,怎么样百分比或lomger时间像1分钟?
谢谢
这样的最小单位为10ms ??什么是我需要使用定时器在微秒?