TI-RTOS实时操作系统之串口应用
适用
CC1310
\CC2640R2F
等基于TI-RTOS的SDK开发
更新-20190622
重新定义API
1、外部传入回调函数,方便调用。
2、增加自定义printf
3、线程安全考虑,增加互斥信号量功能,防止多线程(多任务)同时调用时冲突
4、自定义printf
的缓存使用的是动态分配内存,可以换成固定数据
5、自定义printf
的打印默认结尾带换新行
6、两种打印API,1、MyUart_doSendArray():根据传入数据的长度打印输出。2、MyUart_doPrintf():根据fmt格式,重组字符串
应用实例
//串口接收回调
void myUartReadCallback(void *buf, size_t count)
{
}
//初始化串口
UART_Params uartParams;
uartParams.baudRate = 115200;
MyUart_open(&uartParams, myUartReadCallback);
源码
.c文件
/***** Includes *****/
#include "uartUnit.h"
#include <icall.h>
#include <stdlib.h>
#include <stdarg.h>
#include <stdio.h>
#include <string.h>
#include <ti/drivers/dpl/DebugP.h>
#include <ti/drivers/dpl/SemaphoreP.h>
#include <ti/drivers/dpl/SystemP.h>
/***** Semaphore信号 *****/
static Semaphore_Handle uartMutexSemHandle;
/***** Prototypes *****/
// uartData_ts uartTxData;
char uartRxDataTemp[UART_read_length];
UART_Handle myUartHandle = NULL;
static MyUart_callBack MyUart_recvCB;
void Uart_ReadCallback(UART_Handle handle, void *buf, size_t count)
{
MyUart_recvCB(buf, count);
UART_read(myUartHandle, uartRxDataTemp, UART_read_length); //等待下一次串口接收
}
UART_Handle MyUart_open(UART_Params *params, MyUart_callBack CB)
{
UART_Params uartParams;
UART_Params_init(&uartParams);
Board_initUART()