TI中文支持网
TI专业的中文技术问题搜集分享网站

CC2640的事件

各位前辈好,小弟最近在学习CC2640单片机,由于之前是跑裸机的,现在使用CC2640的TI-RTOS系统,感觉有点无所适从,很不适应,尤其是RTOS的事件这块,比如说有

#define SBP_STATE_CHANGE_EVT        0x0001
#define SBP_CHAR_CHANGE_EVT        0x0002
#define SBP_KEY_CHANGE_EVT           0x0004

#define SBP_ICALL_EVT ICALL_MSG_EVENT_ID       
#define SBP_QUEUE_EVT UTIL_QUEUE_EVENT_ID  
#define SBP_PERIODIC_EVT                                          Event_Id_00

#define SBP_ALL_EVENTS (SBP_ICALL_EVT | \SBP_QUEUE_EVT | \SBP_PERIODIC_EVT | \SBP_QUEUE_PING_EVT)

#define SBP_ALL_EVENTS (SBP_ICALL_EVT | \SBP_QUEUE_EVT | \SBP_PERIODIC_EVT )

这些事件等,另外在不同的事件里面会做不同的判断,如

if (events & SBP_QUEUE_EVT)
{
while (!Queue_empty(appMsgQueue))
{
sbpEvt_t *pMsg = (sbpEvt_t *)Util_dequeueMsg(appMsgQueue);
if (pMsg)
{
// Process message.
SimpleBLEPeripheral_processAppMsg(pMsg);

// Free the space from the message.
ICall_free(pMsg);
}
}
}

if (events & SBP_PERIODIC_EVT)
{
Util_startClock(&periodicClock);

// Perform periodic application task
SimpleBLEPeripheral_performPeriodicTask();
}

我想问几个问题:

1 宏定义的这几个事件到底是什么意思

2 这几个事件到底判断的是啥?比如说  if (events & SBP_QUEUE_EVT)     if (events & SBP_PERIODIC_EVT) 

3  我发现只要是使用按键都会用SBP_QUEUE_EVT事件,然后在 if (events & SBP_QUEUE_EVT)中执行函数中SimpleBLEPeripheral_processAppMsg(pMsg),再执行SimpleBLEPeripheral_handleKeys(pMsg->hdr.state)语句,为什么要这么繁琐,直接在 if (events & SBP_QUEUE_EVT)中执行SimpleBLEPeripheral_handleKeys(pMsg->hdr.state)语句不久好了吗?

请教各位前辈,谢谢。

Nancy Wang:

请去无线论坛咨询。
e2echina.ti.com/…/

赞(0)
未经允许不得转载:TI中文支持网 » CC2640的事件
分享到: 更多 (0)