我已成功使用 UARTCharGet 和 UARTCharPut 来发送和接收小于 FIFO 大小16的少量字节。
现在我要发送16个字节以上的数据、 UARTCharPut 函数会无限期挂起、等待 FIFO 中有一个可用的点。 有时会提出 FaultISR。
UARTEnable 函 数好像没有被调用(但位于 UARTConfigSetExpClk 内部)、或者在启用 UART 之后、UARTDisable 函数被调用。 但是、我在我的代码或我正在使用的任何 TIVAware 库代码中都找不到此类调用。 我知道我快速连续写入16字节 FIFO 中的字符超过16个、但我很高兴 UARTCharPut 函数阻止等待 FIFO 清空一个或多个元素。
我没有使用中断、也没有启用中断。
在首次等待 UARTSpaceAvail 返回 true、no 失效后、我尝试使用 UARTCharPut 非阻塞选项。 我发现解决这个问题的唯一方法是在运行几个对 UARTCharPut 的调用之前、按 如下所示设置一个大延迟
ROM_SysCtlDelay (200000); UARTCharPut (Command_UART_PORT_With_EP、0x23);//获取滤波器类型的应答 cmd UARTCharPut (Command_UART_PORT_With_EP、(uint8_t) FilterChannel);//使用通道 UARTCharPut (Command_UART_PORT_FilterType、UART8_intt)进行应答;//使用 FilterType
解释这种行为的可能原因是什么?
BTW 这是我的 UART 初始化例程:
void initialize_uart_on_ep (void) { Command_UART_port_and_EP=UART6_BASE; SysCtlPeripheralEnable (SYSCTL_Periph_GPIOP);//将 EP 初始化为 SP UART 以执行命令 SysCtlPeripheralEnable (SYSCTL_Periph_UART6);//将 EP 初始化为 SP UART6。 GPIOPinConfigure (GPIO_PP0_U6RX);//UART 用于 EP 和 SP 之间的命令 GPIOPinConfigure (GPIO_P1_U6TX);//UART 用于 EP 和 SP GPIOPinTypeUART (GPIO_PORTP_BASE、GPIO_PIN_0 | GPIO_PIN_1)之间的命令;//UART 用于800EP_USTR_U_UST_UART8_UST_UTP_US_UST_UTOP0_US_UST_UTP_UST_UTP_UST_UTP_0 | UART_US_US_UST_UTP_UST_UTOOT_US_US_UST_UTP_UST_UTP_0_UST_UTP_UST_UTP_UST_UTO