最近接了个项目,是要开发个蓝牙透传功能。所以我就捡起了几年没弄的板子。
重新搭建环境,以前玩的时候还是ble-stack-1.4.2,现在已经出了1.5.1,据说这个版本的协议栈已经支持蓝牙5.0了,不知道真假,还没有测试。

安装了IAR 10.20.1 for 8051,安装好协议栈1.5.1,打开simpleBLEPeripheral

步骤,工程选cc2541,然后option里面宏定义关闭power_saving,打开hal_led,
打开hal_uart

在simpleBLEPeripheral.c里面,添加npi.h
在SimpleBLEPeripheral_Init里面添加如下:

NPI_InitTransport(NpiSerialCallback);
NPI_WriteTransport("hello BEN PAO!\r\n",16);

文件末尾添加

static void NpiSerialCallback(uint8 port,uint8 events)
{
  (void)port;
  if(events & (HAL_UART_RX_TIMEOUT | HAL_UART_RX_FULL))
  {
    uint8 numBytes=0;
    numBytes=NPI_RxBufLen();
    if(numBytes == 0)
    {
      return;
    }
    else
    {
      uint8 *buffer=osal_mem_alloc(numBytes);
      if(buffer)
      {
        NPI_ReadTransport(buffer,numBytes);
        NPI_WriteTransport(buffer,numBytes);
        osal_mem_free(buffer);
      }
    }
  }
}

simpleProfileChangeCB函数,是特征值改变后的回调函数
我自己测试手机发送特征值数据,这里判断到了点灯和发串口信息,成功。