4个帖子/ 0新
最后一篇
prasanth.velliy ...
离线
最后一次露面:1年9个月前
加入:2016-02-18 12:18
app_timer_set.

在DSPS设备项目中

步骤1:
extern const struct ke_msg_handler user_spss_process_handlers [] =
{
{sps_server_create_db_cfm,(ke_msg_func_t)user_sps_create_db_cfm_handler},
{sps_server_enable_cfm,(ke_msg_func_t)user_sps_server_enable_cfm_handler},
{sps_server_data_tx_cfm,(ke_msg_func_t)user_sps_server_data_tx_cfm_handler},
{sps_server_data_rx_ind,(ke_msg_func_t)user_sps_server_data_rx_ind_handler},
{sps_server_tx_flow_ctrl_ind,(ke_msg_func_t)user_sps_server_tx_flow_ctrl_ind_handler},
{sps_server_error_ind,(ke_msg_func_t)user_sps_server_error_ind_handler},
{app_sample128_timer,(ke_msg_func_t)sample128_timer_handler},
};

第2步:
msgid,liment128_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);// 宣言

第3步:
msgid,liment128_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)//定义
{

app_timer_set(app_sample128_timer,task_app,600);

return(ke_msg_consumed);
}

第4步:计时器呼叫

void user_ble_pull(bool init,bool成功)
{
如果(init)
{
app_timer_set(app_sample128_timer,task_app,600);
user_send_ble_data(p_data,长度);
}
别的 {
user_send_ble_data(p_data,长度);
}
}

问题 :
代码始终在这里停止.... / ** hardfault_handeler ** / ....
if((getword16(sys_stat_reg)&dbg_is_up)== dbg_is_up)
__asm(“bkpt#0 \ n”);
别的
而(1);

什么可能是问题......我正在做正确的方式吗?

关键词:
设备:
mt_dialog.
离线
最后一次露面:1个月1周前
职员
加入:2015-06-08 11:34
嗨prasanth,

嗨prasanth,

我想你宣布了app_sample128_timer作为sps_server的消息API中的消息,但我无法理解您的代码。从哪里触发定时器?当计时器经过时,它将执行示例128_timer_handler()而不是user_ble_pull以便以特定间隔提取数据。似乎你得到的错误是因为如果在代码中某处调用user_ble_pull形式,则会继续分配相同的计时器。

只是放置app_timer_set(app_sample128_timer,task_app,600);在On_Connection回调中,删除自定义user_ble_pull并将您想要的代码放在计时器处理程序函数中。

谢谢mt_dialog.

prasanth.velliy ...
离线
最后一次露面:1年9个月前
加入:2016-02-18 12:18
void user_on_connection(uint8

void user_on_connection(uint8_t connection_idx,struct gapc_connection_req_ind const * param)
{
default_app_on_connection(connection_idx,param);
user_gattc_exc_mtu_cmd(connection_idx);
app_easy_gap_param_update_start(connection_idx);

app_timer_set(app_sample128_timer,task_app,100);// timer_handler调用函数

ARCH_PRINTF(“设备连接\ r \ n”);
}

int sample128_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)//定义
{
uint16_t长度;
uint8_t vp [8] =“欢迎”;
struct sps_server_data_tx_req * req = ke_msg_alloc_dyn(sps_server_data_tx_req,
task_sps_server,task_app,sps_server_data_tx_req,长度);

req->长度=长度;
memcpy(&req-> data [0],vp,sizeof(vp));

KE_MSG_SEND(REQ);
app_easy_timer_cancel_all();

return(ke_msg_consumed);
}

我是我使用的 - app_timer_set(app_sample128_timer,task_app,100);在正确的地方?我仍然面临问题,我在int sample128_timer_handler里面使用了断点 - 似乎处理程序正在执行......你能告诉我一个例子,在dsps中为代码工作app_timer_set - 代码

mt_dialog.
离线
最后一次露面:1个月1周前
职员
加入:2015-06-08 11:34
嗨prasanth,

嗨prasanth,

1.将App_sample128_timer添加为SPS_SERVER任务的枚举消息中的消息。

2.在user_spss_process_handlers []中添加{app_sample128_timer,(ke_msg_func_t)sample128_timer_handler} []

3.将以下代码段添加为定时器的处理程序。

msgid,liment128_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)//定义
{

ARCH_SET_PXACT_GPIO();
app_timer_set(app_sample128_timer,task_app,100);
user_send_ble_data(“别人”,6);

return(ke_msg_consumed);
}

4.添加app_timer_set(app_sample128_timer,task_app,600);要在连接时开始计数(使计时器在连接时开始计数)。

与设备建立连接时,计时器将触发,并且您将开始发送通知。

谢谢mt_dialog.