|
@ -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); |
|
|
|
|
|
} |
|
|
|
|
|
} |
|
|
} |
|
|
} |