523回 发表于 2013-11-3 20:14:13

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

523回 发表于 2013-11-3 20:15:09

串口收发都不成功,请大神帮忙看一下,谢谢

mupro 发表于 2013-11-3 23:12:17

楼主和我一样的问题呀,楼主用的ADK多少版本的,一起讨论下

523回 发表于 2013-11-4 09:49:04

mupro 发表于 2013-11-3 23:12
楼主和我一样的问题呀,楼主用的ADK多少版本的,一起讨论下

我用的是ADK2.0

高奖 发表于 2013-11-4 10:13:47

这个不会搞啊!求教!

523回 发表于 2013-11-4 10:42:58

听说初始化那要改成这样,我还没试
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);
}

mupro 发表于 2013-11-6 21:41:21

transport设为Raw

mupro 发表于 2013-11-6 21:42:02

楼主的uart通了吗?最近都在搞cc2540

whljsh 发表于 2013-11-7 09:08:10

参观学习。。

barry_chen 发表于 2013-11-7 09:18:01

学习.学习.....
页: [1] 2 3 4 5
查看完整版本: BC5 串口收发问题