This thread has been locked.

If you have a related question, please click the "Ask a related question" button in the top right corner. The newly created question will be automatically linked to this question.

关于simpleBLEPeripheral工程中main loop的问题咨询

Other Parts Discussed in Thread: CC2650

您好:

我用CC2650做了一个蓝牙模块,在利用simpleBLEPeripheral工程开发时,在任务的主循环函数里加入了几个调用SPI的函数,发现在手机与蓝牙建立连接之前,是可以执行这些函数的,但是在手机与蓝牙建立连接之后,无法执行完这个函数,程序就卡在了其他地方,具体是什么地方未知,在disassembly里定位不到,请问是什么原因呢?

期待您的回复,谢谢!

  • 具体是卡在哪里?
    大概率是添加SPI的配置不对,建议按照我们的官方指导手册进行操作: processors.wiki.ti.com/.../Cc2640_Adding_a_UART_or_SPI_driver_to_a_Sample_Project
  • 您好:

    具体卡在代码的哪个位置无法定位,从disassembly窗口来看每次都卡在同一个地方,如图所示。

    我的main loop 函数和SPI初始化函数如下,请帮忙看一下有什么问题,非常感谢!

    for (;;)
    {

        BLE_Polling();  //ICall相关

       //SPI数据处理
       if(events & BLE_SPI_EVT)
       {
         events &= ~BLE_SPI_EVT;
         len = RecvDatabySPI(buffer); //从SPI接口接收数据
         SendDatabyBLE(buffer,len); //数据利用蓝牙发送出去
       }
       if(!STATE_CD()) //DATA模式
       {
         DataMode();
       }
       else //CMD模式
       {
         CmdMode();
       }
    }

     void BLE_SPI_Init()
    {
      SPI_init();  
      SPI_Params_init(&SpiParams);
      SpiParams.transferCallbackFxn = SPITransferCallback;
      SpiParams.mode = SPI_SLAVE; 
      SpiParams.transferMode = SPI_MODE_CALLBACK;
      SpiHdl = SPI_open(Board_SPI0, &SpiParams);
      
      slaveTranData.count = 1;  
      slaveTranData.txBuf = NULL;                                                   //所要被写数据的地址
      slaveTranData.rxBuf = &RxData;                      //接收数据所存放的地址
      transferOK=SPI_transfer(SpiHdl, &slaveTranData);
    }
  • 关闭低功耗没有?