void GUA_Init( uint8 task_id )
{
GUA_TaskID = task_id;
//执行香瓜任务的启动事件
osal_set_event( GUA_TaskID, GUA_START_DEVICE_EVT );
}
void SimpleBLETest_Init( uint8 task_id )
{
//保存任务id到全局变量
SimpleBLETest_TaskID = task_id;
// Setup a delayed profile startup
/*
设置一个启动任务事件,可以起到一个延时的作用
//其实在这个地方也可以直接启动自动加载的函数
//osal_start_reload_timer( SimpleBLETest_TaskID, SBP_PERIODIC_EVT, SBP_PERIODIC_EVT_PERIOD );
就是处理 SBP_START_DEVICE_EVT
*/
osal_set_event( SimpleBLETest_TaskID, SBP_START_DEVICE_EVT );
}
osal_set_event( SimpleBLETest_TaskID, SBP_START_DEVICE_EVT );
所以在主函数中,系统初始化后,就调用了一个用户事件,随后进入用户任务事件处理函数进行处理(流程如下)。所以此处是否应该考虑将这条发送事件函数删除,如需验证,再单独放在启动系统函数OSAL_START_SYSYTEM之前。
->osal_init_sysytem-->osalInitTasks--->User_Init---->osal_set_event(User_taskID,USER_START_DECIVE_EVT)
程序另一个小错误在User头文件中未添加
extern uint8 User_taskID;
博主原程序如下
#ifndef GUA_H
#define GUA_H
#ifdef __cplusplus
extern "C"
{
#endif
/*********************头文件************************/
#include "bcomdef.h"
/*********************宏定义************************/
#define GUA_START_DEVICE_EVT 0x0001
#define GUA_LED_TEST_EVT 0x0002
/*******************香瓜函数************************/
extern void GUA_Init( uint8 task_id );
extern uint16 GUA_ProcessEvent( uint8 task_id, uint16 events );
#ifdef __cplusplus
}
#endif
#endif
刚开始学习,如有问题,还望矫正。