应用程序\定时器\设置

4个职位/0个新职位
最后一篇文章
普拉桑特·维利...
离线
最后一次见到:1年9个月前
已加入:2016-02-18 12:18
应用程序\定时器\设置

在DSPS设备项目中

第一步:
extern const struct ke\ u msg\ u handler user\ u spss\ u process\ u handlers[]=
{
{SPS\u SERVER\u CREATE\u DB\u CFM,(ke\u msg\u func\t)user\u SPS\u CREATE\u DB\u CFM\u handler},
{SPS\u SERVER\u ENABLE\u CFM,(ke\u msg\u func\t)user\u SPS\u SERVER\u ENABLE\u CFM\u handler},
{SPS\u SERVER\u DATA\u TX\u CFM,(ke\u msg\u func\t)user\u SPS\u SERVER\u DATA\u TX\u CFM\u handler},
{SPS\u SERVER\u DATA\u RX\u IND,(ke\u msg\u func\t)user\u SPS\u SERVER\u DATA\u RX\u IND\u handler},
{SPS\u SERVER\u TX\u FLOW\u CTRL\u IND,(ke\u msg\u func\t)user\u SPS\u SERVER\u TX\u FLOW\u CTRL\u IND\u handler},
{SPS\u SERVER ERROR\u IND,(ke\u msg\u func\t)user\u SPS\u SERVER ERROR\u IND\u handler},
{APP\u SAMPLE128\u TIMER,(ke\u msg\u func\t)SAMPLE128\u TIMER\u handler},
};

第二步:
int sample128\u timer\u handler(ke\u msg\u id\u t const msgid,
void const*参数,
任务id常量目标id,
ke_task_id_t const src_id);//声明

第三步:
int sample128\u timer\u handler(ke\u msg\u id\u t const msgid,
void const*参数,
任务id常量目标id,
ke\u task\u id\u t const src\u id)//定义
{

app\u timer\u set(app\u SAMPLE128\u timer,TASK\u app,600);

返回(已消耗的消息);
}

第四步:定时呼叫

无效用户\u ble \u pull(bool init,bool success)
{
if(初始化)
{
app\u timer\u set(app\u SAMPLE128\u timer,TASK\u app,600);
用户发送数据(p数据,长度);
}
其他{
用户发送数据(p数据,长度);
}
}

问题:
代码总是停在这里。。。。/**硬件故障\u handler**/。。。。
if((GetWord16(SYS\u STAT\u REG)&DBG\u IS\u UP)==DBG\u IS\u UP)
__asm(“BKPT#0\n”);
其他的
而(1);

有什么问题…我做的对吗??

关键词:
设备:
MT\u对话框
离线
最后一次见到:1个月1周前
工作人员
已加入:2015-06-08 11:34
嗨,普拉桑,

嗨,普拉桑,

我想你已经宣布APP\u SAMPLE128\u TIMER作为SPS\u服务器的消息API中的消息,尽管我无法理解您的代码。从哪里触发定时器?当计时器结束时,它将执行sample128\u timer\u handler(),而不是用户\u ble\u pull,以便在特定的时间间隔内提取数据。似乎您得到的错误是因为如果您在代码中的某个地方调用用户table\pull表单,那么您会不断地分配相同的计时器。

只需放置app\u timer\u set(app\u SAMPLE128\u timer,TASK\u app,600);在on\u连接回调中,删除自定义用户\u ble\u pull并将所需的代码放入计时器处理程序函数中。

谢谢你的对话

普拉桑特·维利...
离线
最后一次见到:1年9个月前
已加入:2016-02-18 12:18
在\u连接(uint8)上无效用户\u

无效用户连接(uint8\u t connection\u idx,struct gapc\u connection\u req\u ind const*param)
{
默认\u app \u on \u connection(connection \u idx,param);
用户\u gattc \u exc \u mtu \u cmd(连接\u idx);
应用程序\u轻松\u间隙\u参数\u更新\u启动(连接\u idx);

app_timer_set(app_SAMPLE128_timer,TASK_app,100);//timer_handler调用函数

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

int sample128\u timer\u handler(ke\u msg\u id\u t const msgid,void const*param,ke\u task\u id\u t const dest\u id,ke\u task\u id\u t const src\u id)//定义
{
uint16长度;
uint8\u t vp[8]=“欢迎”;
结构sps\u server\u data\u tx\u req*req=KE\u MSG\u ALLOC\u DYN(sps\u server\u data\u tx\u req,
任务\ SPS\服务器、任务\应用程序、SPS\服务器\数据\发送\请求、长度);

需求->长度=长度;
memcpy(&req->数据[0],vp,sizeof(vp));

发送消息(请求);
app_easy_timer_cancel_all();

返回(已消耗的消息);
}

我是否在正确的位置使用了-app\u timer\u set(app\u SAMPLE128\u timer,TASK\u app,100)??我仍然面临着一些问题,我在int sample128\u timer\u handler中使用了断点-似乎处理程序没有执行…你能给我一个在dsp中运行app\u timer\u set代码的例子吗

MT\u对话框
离线
最后一次见到:1个月1周前
工作人员
已加入:2015-06-08 11:34
嗨,普拉桑,

嗨,普拉桑,

1将APP\u SAMPLE128\u计时器作为消息添加到SPS\u服务器任务的enum messages中。

2添加{APP\u SAMPLE128\u TIMER,(ke\u msg\u func\t)SAMPLE128\u TIMER\u handler},在user\u spss\u process\u handlers[]

三。添加以下代码段作为计时器的处理程序。

int sample128\u timer\u handler(ke\u msg\u id\u t const msgid,
void const*参数,
任务id常量目标id,
ke\u task\u id\u t const src\u id)//定义
{

arch_set_pxact_gpio();
app\u timer\u set(app\u SAMPLE128\u timer,TASK\u app,100);
用户发送数据(“伙伴”,6);

返回(已消耗的消息);
}

4添加app\u timer\u set(app\u SAMPLE128\u timer,TASK\u app,600);以在连接时开始计数(triigers the timer to start counting on connection)。

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

谢谢你的对话