注意:在创建线程的时候需要在app_thread.h 中的APP_MOODUAL_ID_T 中添加线面的句柄
// 创建一个线程
// APP_MODUAL_ANC--> 线程的句柄 app_anc_handle_process--> 线程运行的函数
app_set_threadhandle(APP_MODUAL_ANC, app_anc_handle_process);
// 通过运行对于的函数去运行线程函数
void app_anc_status_post_extend(uint32_t param0, uint32_t param1, uint32_t param2)
{
APP_MESSAGE_BLOCK msg;
TRACE(" %s param0:0x%04X param1:%d param2:%d", __func__, param0, param1, param2);
// 想要运行的线程ID,也就是创建线程时用到的句柄
msg.mod_id = APP_MODUAL_ANC;
// 在运行线程函数时需要用到的ID。因为一个线程函数中有可能会进行多个处理。
// 所以通过对于case id 来区分对应的需要做什么处理
msg.msg_body.message_id = ANC_EVENT_CHANGE_STATUS;
// 下面的几个是创参数。可以不传
msg.msg_body.message_Param0 = param0;
msg.msg_body.message_Param1 = param1;
msg.msg_body.message_Param2 = param2;
// 将对于的线程函数运行
app_mailbox_put(&msg);
}
// 线程函数
static int app_anc_handle_process(APP_MESSAGE_BODY *msg_body)
{
// 下面是运行之前传进来的参数。可以不传
uint32_t arg0 = msg_body->message_Param0;
uint32_t arg1 = msg_body->message_Param1;
uint32_t arg2 = msg_body->message_Param2;
// 发送线程函数中的 case id
switch (msg_body->message_id)
{
...
}
}
// 关闭线程 将句柄对于的函数设为空
app_set_threadhandle(APP_MODUAL_ANC, NULL);
|