问题描述: 在使用DSPS_v_5.150.2工程中添加wakeup_timer = app_easy_timer(DC_TIMER_TO,dc_timer_cb);定时DC_TIMER_TO=50.发现dc_timer_cb函数只被触发一次,而不是500ms周期触发。请问是我哪里还需要配置么?请DIALOG技术和论坛朋友帮忙指点下。 1.ke_msg_id_t wakeup_timer;
2. void dc_timer_cb(void) { static uint8_t i = 0;
wakeup_timer = 0xFFFF;
if(i == 0) { i = 1; GPIO_SetActive( LED_PORT, LED_PIN); }else { i = 0; GPIO_SetInactive( LED_PORT, LED_PIN); }
arch_printf("%d: dc events\r\n",__LINE__); } 3.wakeup_timer = app_easy_timer(DC_TIMER_TO,dc_timer_cb);
p.s 使用官方例程ble_app_barebone,修改以下函数,发现P1.0电平是交替,函数 adv_data_update_timer_cb是被循环调用的。 static void adv_data_update_timer_cb() { static uint8_t i = 0; app_adv_data_update_timer_used = 0xFFFF;
if(i == 0) { i = 1; GPIO_SetActive( GPIO_PORT_1, GPIO_PIN_0); }else { i = 0; GPIO_SetInactive( GPIO_PORT_1, GPIO_PIN_0); } app_easy_gap_advertise_stop(); }
在线等回复!请官方技术支持下。谢谢
官方的例子里面,
1.定时器时间到,在回调函数里面,会调用app_easy_gap_advertise_stop,然后发出GAPM_CANCEL消息,通知底层停止发送广播包 2.处理上来的GAPM_CMP_EVT消息,在app_entry_point_handler->app_gap_process_handlers->gapm_cmp_evt_handler->处理case GAPM_ADV_UNDIRECT: 3. 调用在结构user_app_callbacks下设定的“app_on_adv_undirect_complete”接口函数user_app_adv_undirect_complete,因为status为GAP_ERR_CANCELED,重新组织Adv包的发送
你的应用里面,可以重新在回调函数里面重开一个定时器,或者直接用PWM的方式,都可以。
谢谢,我开启app_easy_timer()函数的目的是想周期唤醒DA14583 1.如果我使用硬件timer的话,在extend_sleep模式下,硬件timer是不能使用的。 2.重开一个定时器的话,算是BLE event么?或者说这样子能唤醒DA14583么? void dc_timer_cb(void) { static uint8_t i = 0;
arch_printf("%d: dc events\r\n",__LINE__); wakeup_timer = app_easy_timer(DC_TIMER_TO,dc_timer_cb); }
@Gongyu_Dialog 期待您的回复。。
1.硬件timer睡眠的情况下就用不了了。一般还是建议用app_easy_timer,底层调用的是BLE协议栈内部的定时器。 2.这样可以,没问题
好的,谢谢。 我例外发帖问了一个关于DA14583睡眠模式在DSPS工程中的逻辑问题,还请支持下,非常感谢!
好的