我正在使用带有 AVR Studio 5 的 EVK1105 开发板作为我的 AVR 项目的开发 IDE。我在其中使用 FreeRTOS。我在这块板上有 3 个 USART 端口。一个外部模块通过 USART-RS232 模式连接到我的 AVR32 板。它以 19230 波特率、7 数据位、奇校验、停止位 1 和正常通道模式将连续串行数据发送到我的 USART0 板上。为此,我创建了一个新任务。在每 9 个数据字节之后,它发送 '\n' 和 '\r'。所以在我的任务中,我继续在字符串缓冲区中收集 9 个数据字节,然后在 USART1 上传输它。我正在使用轮询方法从正在接收端口的 USAR0 收集数据。但是我在接收数据时遇到了问题。我不知道是时间问题还是调度程序在收集数据时切换了任务。但我没有得到所需的数据。
以下是我已经检查过的故障排除 1. 将我的外部模块连接到我的 PC 超级终端,这给了我完美的结果。2. 实现了使用从 USART0 接收的相同操作,并且无论接收到什么都将传输到 USART1,就像没有 FreeRTOS 一样。它工作正常。
请提出一些想法可能出了什么问题。我正在使用队列在 Tx 和 Rx 任务之间进行通信,以将字符串缓冲区从 USART0 传递到 USART1。处理队列有问题吗?如何解决队列问题?
我在 Rx Task 的无限任务循环中使用了 50 毫秒的延迟。它会产生问题吗?如果我不使用任何延迟,操作系统就会崩溃。请提出一些好的做法来在 FreeRTOS 中创建新任务,这样我就不会遇到任何时间问题。