5个职位/ 0个新职位
最后发表
zhongfushun
离线
最后看到:1个月前
加入:2019-04-24 02:30
关于DA14583合

学习合中出现的问题:

使用定时器周期性调用以下函数,试图周期性发送心率值到手机应用,传递给该函数的值是1从逐步递加到120的整数值,但当该值递加到70左右(从手机应用观察到),板子死机,之后与手机应用断开链接,就再也连接不上了。这大概是什么原因造成的?因为是初学者,麻烦提供思路。

空白app_hrps_meas_send (uint16_t hrp_val)

//在数据库中添加BASS
struct hrps_meas_send_req * req = KE_MSG_ALLOC(hrps_meas_send_req, TASK_HRPS,
TASK_APP hrps_meas_send_req);

申请- > conhdl = active_conhdl;
Struct hrs_hr_meas *phrs_hr_meas = &req->meas_val;
phrs_hr_meas - >标志= HRS_FLAG_HR_8BITS_VALUE;
phrs_hr_meas - > nb_rr_interval = 4;
phrs_hr_meas - > rr_intervals [0] = 10;
phrs_hr_meas - > heart_rate = hrp_val;
phrs_hr_meas - > energy_expended = HRS_HR_CNTL_POINT_CODE;

//发送消息
ke_msg_send(要求的);

以下是激活资料函数:

空白app_hrps_enable (uint16_t conhdl)

//分配消息
struct hrps_enable_req * req = KE_MSG_ALLOC(hrps_enable_req, TASK_HRPS, TASK_APP,
hrps_enable_req);
//填充参数结构
active_conhdl = conhdl;
申请- > conhdl = conhdl;
申请- > sec_lvl = get_user_prf_srv_perm (TASK_HRPS);
申请- > con_type = PRF_CON_NORMAL;/ / PRF_CON_DISCOVERY;
req->hr_meas_ntf_en = 0;//默认关闭通知。
/ /请求- > batt_level_ntf_cfg [0] = 0;//默认为关闭通知。
申请- > body_sensor_loc = 0;

//发送消息
ke_msg_send(要求的);

app_hrps_config((uint16_t)0, USE_HRPS_LEVEL_ALERT, GPIO_HRPS_LED_PORT, GPIO_HRPS_LED_PIN);
app_hrp_poll_start (APP_HRPS_POLL_INTERVAL);

设备:
CYibin
离线
最后看到:10个月,3个星期前
工作人员
加入:2017-12-14 02:48
你好,

你好,

有几个问题需要确认:

1.定时器用的哪个接口?定时周期是多少?将该部分的相关代码完整贴出来。

2.用凯尔调试模式的时候,观察到死机的位置是吗?

zhongfushun
离线
最后看到:1个月前
加入:2019-04-24 02:30
1、定时器定义代码如下:

1、定时器定义代码如下:

app.h添加,见加粗字体

/// APP任务消息
enum APP_MSG

APP_MODULE_INIT_CMP_EVT = KE_FIRST_MSG (TASK_APP),

#如果BLE_PROX_REPORTER
APP_PXP_TIMER,
# endif / / BLE_PROX_REPORTER

#如果BLE_BAS_SERVER
APP_BATT_TIMER,
APP_BATT_ALERT_TIMER,
# endif / / BLE_BAS_SERVER

#如果BLE_HR_SENSOR
APP_HRPS_TIMER,
APP_HRPS_ALERT_TIMER,

# endif

启动定时器代码:

空白app_hrp_poll_start (uint16_t poll_timeout)

hrp_poll_timeout = poll_timeout;

app_timer_set (APP_HRPS_TIMER TASK_APP 10);//在100毫秒内进行第一次轮询

定时器事件处理代码:

Const struct ke_msg_handler app_hrps_process_handlers[]=

(ke_msg_func_t) hrps_create_db_cfm_handler}, {HRPS_CREATE_DB_CFM
(ke_msg_func_t) hrps_meas_send_cfm_handler}, {HRPS_MEAS_SEND_CFM

(ke_msg_func_t) app_hrps_cfg_indntf_ind}, {HRPS_CFG_INDNTF_IND
(ke_msg_func_t) app_hrp_timer_handler}, {APP_HRPS_TIMER
(ke_msg_func_t) app_hrp_alert_timer_handler}, {APP_HRPS_ALERT_TIMER

(ke_msg_func_t) hrps_disable_handler}, {HRPS_DISABLE_IND

};

Int app_hrp_timer_handler(ke_msg_id_t const msgid,
空白const *参数,
ke_task_id_t const dest_id,
ke_task_id_t const src_id)

app_hrp_lvl(); / /在这里发送心率值

app_timer_set (APP_HRPS_TIMER dest_id hrp_poll_timeout);

返回(KE_MSG_CONSUMED);

2、死机位置是:

空白wrap_platform_reset (uint32_t错误)

ASSERT_WARNING(错误= = RESET_AFTER_SPOTA_UPDATE);//在SPOTA重置的情况下不中断
platform_reset_func(错误);

以上,谢谢!

zhongfushun
离线
最后看到:1个月前
加入:2019-04-24 02:30
CYibin,你的好,问题已解决,系处理HRPS_MEAS

CYibin,你的好,问题已解决,系处理HRPS_MEAS_SEND_CFM事件时发了不适合的命令。

CYibin
离线
最后看到:10个月,3个星期前
工作人员
加入:2017-12-14 02:48
嗨zhongfushun,好的,感谢分享。

嗨zhongfushun,好的,感谢分享。

主题锁定