BC5 串口收发问题
typedef struct{TaskData task;
}bt_uart_t;
bt_uart_t bt_uart;
extern BT_INFO *pBtInfo;
static void UartRecv(BT_INFO *pBtInfo)
{
Source src;
uint8 *s = NULL;
uint8 size = 0;
src = StreamUartSource();/* get the uart source header */
s = (uint8*)SourceMap(src);/* get the uart source memory */
size = SourceSize(src);
memcpy(&pBtInfo->uart.buf,s,size);
SourceDrop(src,size); /*Discards the indicated number of bytes from the front of the source*/
}
static void UartHandler(Task task, MessageId id, Message message)
{
DBGD(("\nUart recv id:----> %d",id));
switch (id)
{
case MESSAGE_MORE_DATA:
UartRecv(pBtInfo);
DBGD(("Uart recv data:\n"));
break;
default:
break;
}
}
void InitUart(BT_INFO *pBtInfo)
{
bt_uart.task.handler = UartHandler;
StreamUartConfigure(VM_UART_RATE_115K2,VM_UART_STOP_ONE,VM_UART_PARITY_NONE);
/*MessageSinkTask(StreamUartSink(), &bt_uart.task);*/
MessageSinkTask(StreamSinkFromSource(StreamUartSource()),&bt_uart.task);
}
void UartSend(BT_INFO *pBtInfo,uint8 *buf, uint16 len)
{
Sink sink;
if (buf == NULL || len == 0)
{
DBGD(("Uart Send buf is NULL or len is zero\n"));
}
/*sink = StreamUartSink();*/
sink = StreamSinkFromSource(StreamUartSource());
if(sink && SinkClaim(sink, sizeof(uint8)*len) != 0xFFFF)
{
memcpy(SinkMap(sink), buf, sizeof(uint8)*len);
/*SinkFlush*/
PanicZero(SinkFlush(sink, sizeof(uint8)*len));
}
else
{
DBGD(("Can not send uart\n"));
}
} 串口收发都不成功,请大神帮忙看一下,谢谢 楼主和我一样的问题呀,楼主用的ADK多少版本的,一起讨论下 mupro 发表于 2013-11-3 23:12
楼主和我一样的问题呀,楼主用的ADK多少版本的,一起讨论下
我用的是ADK2.0 这个不会搞啊!求教! 听说初始化那要改成这样,我还没试
void InitUart(BT_INFO *pBtInfo)
{
bt_uart.task.handler = UartHandler;
MessageSinkTask(StreamUartSink(),&bt_uart.task);
StreamConfigure(VM_STREAM_UART_CONFIG,VM_STREAM_UART_LATENCY);
StreamUartConfigure(VM_UART_RATE_115K2,VM_UART_STOP_ONE,VM_UART_PARITY_NONE);
} transport设为Raw 楼主的uart通了吗?最近都在搞cc2540 参观学习。。 学习.学习.....