最近在做一个source工程项目,主要是实现将I2S的音频通过蓝牙发射出去,串口作为控制外扩芯片的接口,真是困难重重啊,只想吐槽下ADK的功能强大,但是难用的特色(个人观点)。
因为CSR在source工程中已经封装了任务Task,所以就不能安装裸跑的方式,简单实现收发,而是需要注册任务的方式实现:
但是考虑到只有MessageSinkTask函数,所以这样写:
void uartStreamInit(void)
{
/* Assign task message handler */
theUARTStreamTask.task.handler = uart_stream_handler;
StreamConfigure(VM_STREAM_UART_CONFIG, VM_STREAM_UART_THROUGHPUT);
/* Configure uart settings */
StreamUartConfigure(VM_UART_RATE_57K6, VM_UART_STOP_ONE, VM_UART_PARITY_NONE);
/* Get the source for the uart */
theUARTStreamTask.uart_source = StreamUartSource();
if(theUARTStreamTask.uart_source != 0)
PanicNull(theUARTStreamTask.uart_source);
/* Register uart source with task */
MessageSinkTask(StreamSinkFromSource(theUARTStreamTask.uart_source), &theUARTStreamTask.task);
}
而发送接收则参考网上的同志写为:
static void uartSendD