
http://blog.****.net/feilusia/article/details/47431659
基本上看上面这个博客的.
重点是:
1. 关闭流控, 在npi.h里面, 将
#define NPI_UART_FC FALSE
设置成FALSE就行.
2. 在IAR的编译处理里面, 将HAL_UART=TRUE加进去, 同时确定没有POWER_SAVE
需要注意, 不要写成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的屏幕, 串口输出还是很重要的, 为下一步的任何连接测试也好, 发送数据也好, 创造了必要条件, 不然谁知道你发了什么屁给从机, 对吧?