发送消息更新特性的应用程序的任务

8帖子/ 0
最后发表
朱塞佩
离线
最后看到:4年7个月前
专家
加入:2015-03-25 34
发送消息更新特性的应用程序的任务

你好,
我跟着SAMPLE128医生,我修改它添加新特性等等。
现在我需要知道消息应该发送从应用程序任务配置文件更新特征(例2)特征。
更新的例子我看到两个函数特点2:

/ / /连接状态处理程序定义。
const struct ke_msg_handler sample128_connected [] =
{
(ke_msg_func_t) gattc_write_cmd_ind_handler}, {GATTC_WRITE_CMD_IND
(ke_msg_func_t) sample128_upd_char2_req_handler}, {SAMPLE128_UPD_CHAR2_REQ
};

我推测GATTC_WRITE_CMD_IND发送的消息是正确的,但我不明白为什么还有SAMPLE128_UPD_CHAR2_REQ内部有一个检查连接处理程序:

/ /检查所提供的值
如果(param - > conhdl = = gapc_get_conhdl (trelettra_env.con_info.conidx))

如何正确设置conhdl从应用程序任务?是正确的使用SAMPLE128_UPD_CHAR2_REQ吗?

设备:
Joacimwe
离线
最后看到:1年3个月前
大师
加入:2014-01-14 06:45
SAMPLE128_UPD_CHAR2_REQ是

SAMPLE128_UPD_CHAR2_REQ是使用当你想更新特征值。指示GATTC_WRITE_CMD_IND(印第安纳州)是由系统发送到你的个人资料的任务当中央发送一个命令写入DA14580祝福。

朱塞佩
离线
最后看到:4年7个月前
专家
加入:2015-03-25 34
好的。谢谢。

好的。谢谢。

朱塞佩
离线
最后看到:4年7个月前
专家
加入:2015-03-25 34
我可以从任务发送消息吗

我可以从task_app自己中断例程发送信息吗?
我试着读一个传感器每300毫秒timer0中断。所以我在periph_setup定义一个回调函数:

timer0_register_callback (timer0_interrupt_function);

为提高系统响应、传感器读不是在timer0_interrupt_function执行。所以我决定发送消息从TASK_APP TASK_APP(自己),消息处理程序执行读。app_myproject.c中定义:

空白timer0_interrupt_function (void) {
/ /发送消息
struct myproject_read * cfm = KE_MSG_ALLOC (myproject_read, TASK_APP, TASK_APP myproject_read);
ke_msg_send (cfm);
}

处理程序id app_default_state中声明处理程序:

(ke_msg_func_t) myproject_read_handler}, {MYPROJECT_READ

还有enum myproject_task中定义的消息。h连同其他消息的概要文件。
还在app_myproject_task myproject_read_handler声明和定义。
然而当我运行调试器系统进入循环在timer0_interrupt_function KE_MSG_ALLOC行。
可能会出现什么问题?

Joacimwe
离线
最后看到:1年3个月前
大师
加入:2014-01-14 06:45
如果你没有发送一条消息

如果你不发送消息参数,您可以使用更简单的函数ke_msg_send_basic:
ke_msg_send_basic (MYPROJECT_READ TASK_APP TASK_APP);
在处理程序中,“参数”应该const void *类型的参数。

如果消息发送不工作在一个中断,使用以下代码来唤醒BLE系统调用ke_msg_send_basic之前:
如果(GetBits16 (CLK_RADIO_REG BLE_ENABLE) = = 0){/ /祝福时钟是关闭的
SetBits16 (GP_CONTROL_REG BLE_WAKEUP_REQ 1);
}

朱塞佩
离线
最后看到:4年7个月前
专家
加入:2015-03-25 34
是行不通的。这里的循环

是行不通的。这里的循环

0 x000009ce 4 b0d异地恋r3, [pc, # 52];@0x00000A04
881 0 x000009d0 LDRH r2, r3, # 0 x00]
0 x000009d2 4 b0d异地恋r3, [pc, # 52];@0x00000A08
0 x000009d4 0491 lsl r1, r2, # 18
0 x000009d6 D402 x000009de BMI 0
0 x000009d8 6858异地恋r0, r3, # 0 x04]
0 x000009da 2800 CMP r0, # 0 x00
0 x000009dc x000009ce D0F7 BEQ 0

循环后我按下停止按钮(我使用uVision 5)。与ke_msg_send_basic断点在直线上运行代码指令,之后按步骤一行按钮和代码不停止。我需要按停止按钮来停止执行。后循环的代码。

朱塞佩
离线
最后看到:4年7个月前
专家
加入:2015-03-25 34
我重启uVision和

我重启uVision和断开/ riconnect设备。重新执行到断点的代码(ke_msg_send_basic)。现在一步一步执行指令,但从C代码窗口光标消失,只有拆卸窗口显示光标。执行继续对一些指令直到J-link cortex-M错误警报出现:
“无法阻止Cortex-M设备!请检查jtag电缆”
在命令窗口:
Jlink错误不能读寄存器9
Jlink错误不能读寄存器10

朱塞佩
离线
最后看到:4年7个月前
专家
加入:2015-03-25 34
我认为问题是

我认为问题是发送消息从中断例程是行不通的。我不知道为什么。
我重写代码与一个全局变量设定中断例程,全局变量检查task_app main_func这里消息发出。它以这种方式工作。