Browse Source

fix zuart dma receiver bug

old
zhaohe 2 years ago
parent
commit
102c564962
  1. 8
      components/hardware/uart/zuart_dma_receiver.cpp

8
components/hardware/uart/zuart_dma_receiver.cpp

@ -36,6 +36,7 @@ void ZUARTDmaReceiver::periodJOBIrq() { //
m_lastrxticket = zos_get_tick(); m_lastrxticket = zos_get_tick();
} }
if (m_rxlen != 0) {
if (zos_haspassedms(m_lastrxticket) > m_hw_config.rxovertime_ms) { if (zos_haspassedms(m_lastrxticket) > m_hw_config.rxovertime_ms) {
if (m_cb) m_cb(m_rxbuf, m_rxlen); if (m_cb) m_cb(m_rxbuf, m_rxlen);
@ -43,4 +44,11 @@ void ZUARTDmaReceiver::periodJOBIrq() { //
HAL_UART_DMAStop(m_hw_config.huart); HAL_UART_DMAStop(m_hw_config.huart);
HAL_UART_Receive_DMA(m_hw_config.huart, (uint8_t *)m_rxbuf, m_rxbufsize); HAL_UART_Receive_DMA(m_hw_config.huart, (uint8_t *)m_rxbuf, m_rxbufsize);
} }
} else {
// 如果DMA接收停止了,重新启动
if (!(HAL_UART_GetState(m_hw_config.huart) & 0x1)) {
HAL_UART_DMAStop(m_hw_config.huart);
HAL_UART_Receive_DMA(m_hw_config.huart, (uint8_t *)m_rxbuf, m_rxbufsize);
}
}
} }
Loading…
Cancel
Save