|
蓝牙透传工程中ke_timer_set使用疑问,求指点
发表于 2016-8-12 15:21:37
浏览:9924
|
回复:3
打印
只看该作者
[复制链接]
楼主
使用工程:prj_firefly_passthrough
我希望在程序跑起来后自动启动一个定时器,来执行我自定义的工作。比如定时查询一些外设的状态等。
看了说明ke_timer_set能提供一个最小10ms的定时器,所以就决定使用它了,正好工程里led也用了同样的定时器。
仿照led定时器的使用:
1,app_task.c中添加
const struct ke_msg_handler app_default_state[]=
{APP_SYS_LED_1_TIMER, (ke_msg_func_t) app_led_timer_handler},
//my timer handler
{USER_1_TIMER, (ke_msg_func_t) user_1_timer_handler},
{USER_2_TIMER, (ke_msg_func_t) user_2_timer_handler},
2,app_task.h的enum中添加
APP_SYS_LED_1_TIMER,
//my timer
USER_1_TIMER,
USER_2_TIMER,
3,在usr_design.h & usr_design.c中把相应handler添加好
int user_1_timer_handler(ke_msg_id_t const msgid, void const *param,
ke_task_id_t const dest_id, ke_task_id_t const src_id)
{
ke_timer_clear(USER_1_TIMER, TASK_APP);
com_pdu_send(strlen("USER_1_TIMER\r\n"),"USER_1_TIMER\r\n");
return (KE_MSG_CONSUMED);
}
4,在按键的callback中试了一下ke_timer_set,ok,定时handler跑起来了,时间到了串口有打印了。
5,设置定时代码
ke_timer_set(USER_1_TIMER, TASK_APP, 100);
ke_timer_set(USER_2_TIMER, TASK_APP, 200);
这里才是重点!!!照理来说就应该是可以使用的了!!!
然后我在工程提供的usr_init(void)这个用户自定义初始化函数里面进行这个定时器的设置,定时器居然没有反应?!
而我另外设的自定义的msg及handler放在按键callback和usr_init(void),串口都是有打印的。
结论是msg在usr_init时就已经可以使用了,而timer还没可以使用。
我的理解,这个timer不就是msg的加了一个定时特例吗?发出后都到设置的handler中处理?为什么msg能用了timer还不能用?
请问我应该怎样做呢?这个timer到底在什么时候才开始可以用?
刚接触这个板子几天,对工程不少地方理解还不太够,求大神解答:'(
|
|