TI CC2541的串口输出.

时间:2023-03-09 09:13:03
TI CC2541的串口输出.

http://blog.****.net/feilusia/article/details/47431659

基本上看上面这个博客的.

重点是:

1. 关闭流控, 在npi.h里面, 将

#define NPI_UART_FC                    FALSE

设置成FALSE就行.

2. 在IAR的编译处理里面, 将HAL_UART=TRUE加进去, 同时确定没有POWER_SAVE

TI CC2541的串口输出.

需要注意, 不要写成HAL_UART=TURE, 别问我为什么.

3.在simpleBLEPeripherval.c里面把npi.h加进去.

然后增加串口的回调函数, 当然先申明, 再定义:

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);
            }
        }
    }
}

4. 最后一步, 在Init函数中, 测试一下, 看看能不能再默认115200这个波特(大)率看到串口的输出.

void SimpleBLEPeripheral_Init( uint8 task_id )

  simpleBLEPeripheral_TaskID = task_id;  
  NPI_InitTransport(NpiSerialCallback);
  NPI_WriteTransport("SimpleBLETest_Init\r\n", 20);

...

由于没有买内个所谓的好用的OLED的屏幕, 串口输出还是很重要的, 为下一步的任何连接测试也好, 发送数据也好, 创造了必要条件, 不然谁知道你发了什么屁给从机, 对吧?