微波EDA网,见证研发工程师的成长!
首页 > 研发问答 > 无线和射频 > TI蓝牙设计交流 > event事件处理问题

event事件处理问题

时间:10-02 整理:3721RD 点击:

在事件处理函数中需要处理5个事件,发现放在最后一个if里面的事件总是得不到处理,已经设置了定时启动该事件了,请问需要怎么做?

发现

if ( events & START_DISCOVERY_EVT )
{
simpleBLECentralStartDiscovery( );
return ( events ^ START_DISCOVERY_EVT );
}

这个事件一直会执行,即使我把启动事件的地方注释掉了,它还是会执行

/*if ( simpleBLECharHdl == 0 )
{
osal_start_timerEx( simpleBLETaskId, START_DISCOVERY_EVT, DEFAULT_SVC_DISCOVERY_DELAY );
}*/

geen,

啥工程呢?

追踪一下在工程里面如何触发你的START_DISCOVERY_EVT 事件啊。

TI 提供的例程是通过按键IO触发的。

在MasterSlaveSwitch工程中,事件是在static void simpleBLECentralEventCB( gapCentralRoleEvent_t *pEvent )函数中 case GAP_LINK_ESTABLISHED_EVENT:下

if ( simpleBLECharHdl == 0 )
{
osal_start_timerEx( simpleBLETaskId, START_DISCOVERY_EVT, DEFAULT_SVC_DISCOVERY_DELAY );
}

触发的;我把这个触发事件注释掉了还是回去执行START_DISCOVERY_EVT事件

不排除的一个原因,事件定义的数字必须是一个二进制位,如0x0008,0x0004,0x0001这样的数字,如果你定义0x0003,可能就会触发0x0002和0x0001这两个事件,这样就造成了事件之间的冲突,即使你没有启动这个事件,别的事件也会启动这个事件。我就犯过这样的错误,建议你排查一下。

Copyright © 2017-2020 微波EDA网 版权所有

网站地图

Top