simpleBLEPeripheral工程
各位高手:
大家好,问两个基础问题:
1.在simpleBLEPeripheral工程中,选择CC2540DK_MINI配置,此时LED1和LED2以同样的频率闪烁,大概周期为3s左右,当有按键触发开始广播后,这两个指示灯会以更快的频率闪烁(ms级),当主从模块连接上后任然是这个频率闪烁,请问,我如果想更改LED指示状态,比如主从连接上后,将LED指示灯熄灭,应该在哪部分添加代码?
2.UUID同样是0xFFF1,BLE采用V1.1时对应的handle为0x22,换成了V1.2.1,对应的handle变成了0x25,为什么?
谢谢
Hi Peng chen1,
1. 你可以在peripheral.c 中, static void gapRole_ProcessGAPMsg( gapEventHdr_t *pMsg ) 函数里面 的GAP_LINK_ESTABLISHED_EVENT下关闭LED闪烁. 收到这个event表示link建立了. LED的开关请参考 HalLedSet() .
2. attribute handle 跟协议栈版本无关, 即使你用同一个版本, 获得的handle也有可能不一样. 所以要用UUID去获取handle.
谢谢~
但关于第一条,我试了一下在该函数中添加如下代码:
case GAP_LINK_ESTABLISHED_EVENT:
{
gapEstLinkReqEvent_t *pPkt = (gapEstLinkReqEvent_t *)pMsg;
if ( pPkt->hdr.status == SUCCESS )
{
VOID osal_memcpy( gapRole_ConnectedDevAddr, pPkt->devAddr, B_ADDR_LEN );
gapRole_ConnectionHandle = pPkt->connectionHandle;
gapRole_state = GAPROLE_CONNECTED;
HalLedSet( HAL_LED_1, HAL_LED_MODE_OFF ); //CP
还是不能关闭LED闪烁,能否帮忙验证一下,谢谢!
另外,一上电指示灯就在闪烁,想知道启动这个闪烁的函数是在哪里被调用的,连接成功之后又是在哪个函数中改变闪烁的频率的,谢谢!
Hi Peng,
不知道你用的是哪个工程? 初始化状态是怎么样的?
你可以尝试用HalLedSet()关闭所有LED, 而并非只有LED_1
谢谢
我用的是SimpleBLEPeripheral\CC2540DB\CC2540DK-MINI Keyfob工程,上电初始化后LED指示灯就在闪烁,大概每3秒钟1次,在上述程序中关闭所有LED也都一样,还是会闪烁。主模块用的是HostTestApp,连接成功后只是闪烁频率变快了。
裸机程序,关闭osal_start_system()后,HalLedSet功能是正常的。不明白程序是在哪里调用了LED闪烁功能的。
Hi Peng chen1
我这边的这个工程里面并没有商店就会LED闪烁, 进入广播也不会, 而且代码里面也确实没有设置LED的开关.
而且初始化代码里面也关闭了所有的LED闪烁, 但是前提是在工程里面的preprocessor中要定义 "CC2540_MINIDK", 这个默认应该就是定义的.
请确认用的是1.3版本的软件, 并确认是TI提供的原始工程.
谢谢Yan的帮助,问题找到了,原来是在sleep的状态下关闭了所有指示灯,退出睡眠又打开了指示灯,睡眠周期不一样导致闪烁频率不一样。