我在 Atxmega256 上的 USART 流控制方面遇到了一些问题。我正在与使用 RTS/CTS 进行流量控制的调制解调器通信。一旦调制解调器将 CTS 设置为低,我想停止发送数据,直到它再次变高。我目前正在使用中断驱动的 USART 例程,似乎找不到停止发送的好方法。如果我只是在 CTS 变低时停止发送,发送缓冲区中的所有数据仍将被发送并因此丢失。
我尝试了以下禁用/启用发送:
if(false == clearToSend()) {
USART_TxdInterruptLevel_Set(data->usart, USART_TXCINTLVL_OFF_gc);
while(false == clearToSend()) {}
USART_TxdInterruptLevel_Set(data->usart, USART_TXCINTLVL_LO_gc);
}
不幸的是,这似乎永久禁用了发送。有任何想法吗?
最好的问候弗雷德里克