工具与软件:
您好!
我已将 UART 4配置为在回调模式中读取。 设置此任务后、我跳转到 TCP 任务。
我希望在软件 FIFO 中捕获传入的 UART 流量、而不管正在执行什么任务。 但是、当我发送 UART 流量(USB 转 UART FTDI 桥接器)时、ISR 不会触发。
在我没有使用 TI RTOS 的情况下可以实现此功能、但现在我使用的是任务、ISR 不会触发。 您能告诉我我哪里出错了吗? 谢谢你。
空 InitRs485BusUartTask
(
Mailbox_Handle rs485MbPtr //<指向邮箱句柄的指针
)
{
中频(rs485MbPtr)
{
AssignMb (&rs485BusSys.uartSys Vars_Tx.rs485Handle、rs485MbPtr);
}
const char echoPrompt[]="\fuart 4 is online!:\r\n";
InitUartParams (&rs485BusSy.uartParams);//和 rs485BusSys.initStatus);
volatile bool mailboxPendSuccessess = false;
rs485BusSys.handle = UART_open (Board_UART4、&rs485BusSys.uartParams);
if (rs485BusSys.handle == NULL){
system_abort ("打开 UART 时出错4");
}
UART_read (rs485BusSys.handle、rs485BusSys.inputString、1);
Task_Params_(&R 485BusSys.uartSys Vars_Rx.taskParams);
rs485Bussys.uartSys TASTACKSIZE = Vars_Rx STACKSIZE;
rs485BusSys.uartSys Vars_Rx.taskParams.stack =&rs485BusSys.uartSys Vars_Rx.task0Stack;
rs485BusSys.uartSys Vars_Rx.taskParams.instance->name ="rs485SCON" Uart_Rx;
rs485BusSys.uartSys Vars_Rx。taskParams.priority = UART_RX_task_priority;//1;//TODO 需要考虑此任务的优先级。 目前、此任务处于"正在运行"状态、TCP 处于"就绪"状态
Task_construction (&R。485BusSys.uartSys Vars_Rx.task0Struct、(Task_Func Ptr) rs485BusU52 Fxn_Rx、&rs485BusSys.uartSys Vars_Rx.taskParams、NULL);
system_printf ("启动 UART Echo 示例\n 系统提供程序设置为"
"SYSMIN. 暂停目标以查看"
"ROV.\n");
/* SysMin 只会在您调用 flush 或 exit *时打印到控制台
system_flush();
}
//________________________________________________====
/**
@返回
-无效
处理 UART 接收端的任务。 这将在中接收消息
从 RS -485总线到 UART。
*/
void rs485BusU301 Fxn_Rx
(
UArg arg0、 //<TI RTOS 参数0
UArg arg1 ///< TI RTOS 参数1
)
{
//const char echoPrompt[]="\fuart 4 is online!:\r\n";
// InitUartParams (&rs485BusSys.uartParams、&rs485BusSys.initStatus);)
volatile bool mailboxPendSuccessess = false;
Volatile Int32_t readRtnVal = 0;
int32_t fifoSize = 0;
静态 uint8_t rxBuffer[GENERICE_TEST_FIFO_SIZE];
/*循环永远回显*/
while (1)//0 <(fifoSize = GetSizeGenericFifo (&rs485BusSys.rxFifo))
{
fifoSize = GetSizeGenericFifo (&rs485Bussys.rxFifo);
if (0 < fifoSize)
{
PopGenericFifo (&rs485BusSys.rxFifo、rxBuffer);
//将其发布到 RS485以解析邮箱
//将任务置于睡眠状态
}
//readRtnVal = uart_read (rs485Bussys.handle、rs485BusSys.inputString、rs485_buffer_size);
//否则
//{
//Task_sleep (1);
//}
}
}
//________________________________________________====
/**
@返回
-无效
回调函数、用于寻址 RS485总线的传入 UART 流量。
*/
静态空 Rs485UartReadCallback
(
UART_Handle handle、 //< RS485 UART handle
void * rxBuf、 //<接收缓冲区
size_t size ///<缓冲区内接收到的消息的大小
)
{
if ((size)&&(rxBuf)&&(handle))
{
如果(rs485_buffer_size ==大小)
{
PushGenericFifo (&rs485BusSys.rxFifo、rxBuf);
}
}
}