工具/软件:
我们的器件启用了 RS485 通信、并且运行正常、但我想切换为仅中断驱动的通信、这样处理器在等待传输字符时就不必坐着或循环。
以下代码用于启用其中一个串行端口:
ROM_IntEnable (INT_UART1);
ROM_UARTIntEnable (UART1_BASE、UART_INT_RX | UART_INT_RT);
我是否需要添加 UART_INT_TX、如下所示?
ROM_UARTIntEnable (UART1_BASE、UART_INT_RX | UART_INT_RT | UART_INT_TX);
我在示例代码中找到了以下命令:
MAP_UARTFIFOLEVELSet (g_ui32Base、UART_FIFO_TX1_8、UART_FIFO_RX1_8);
当发送缓冲区中还有一个字符时、这是否意味着会生成中断?
我用于触发中断的是什么、告诉我现在是时候在发送缓冲区中添加更多字符了吗?
下面是我们中断处理程序中的第一行:
UARTHB_Status = ROM_UARTIntStatus (UART1_BASE、TRUE);//获取中断状态
ROM_UARTIntClear (UART1_BASE、UARTHB_Status);//清除置为有效的中断
这些语句是否会清除所有中断、或者我是否需要添加其他内容来清除发送中断?
这是我用于填充输出缓冲区的代码。 请随时发表评论。
for( i = 0 ; i < 300; i++)//填充 FIFO 缓冲区。 注意:在 v2.27 之前、绝不会启用 FIFO 缓冲区。
{
IF (MUST_RESEND_char_HB)
GLOBAL_CHAR_HB = CHARACTER_TO_RESENT_HB;
暴露
global_char_hb = get_from_output_buffer_hb ();
如果 (UARTCharPutNonBlocking (UartPort_HB、GLOBAL_char_HB)== false)//字符未进入 FIFO、则必须重试。 UART1_BASE
{
MUST_RESEND_CHAR_HB = true;
Character_TO_RESENT_HB = GLOBAL_char_HB;
休息;
}
暴露
{
MUST_RESEND_CHAR_HB = false;
}
IF (OUT_wrptr_HB = OUT_rdptr_HB)
{
HOST_1_HB_TRANSFER_FINISED = TRUE;
characters_to_send_hb = false;
休息;
}
}
非常感谢。