void Uart2_idlecallback(void)
{
uint16_t rx_len = 0;
uint16_t i = 0;
__HAL_UART_CLEAR_IDLEFLAG(&huart2);
__HAL_DMA_DISABLE(huart2.hdmarx);
//calculate the length of the received data
rx_len = sizeof(rxdma_f105_buf) -
huart2.hdmarx->Instance->NDTR;
if(rxdma_f105_buf[0]==0xEB)
{
Uart_Rx_uart2.length = rx_len;
for(i = 0; i < rx_len; i ++)
{
Uart_Rx_uart2.data[i] = rxdma_f105_buf[i];
}
}
__HAL_UNLOCK(&huart2);
huart2.RxState = HAL_UART_STATE_READY;
__HAL_UNLOCK(huart2.hdmarx);
huart2.hdmarx->State = HAL_DMA_STATE_READY;
memset(rxdma_f105_buf, 0, sizeof(rxdma_f105_buf));
//restart the DMA receive
HAL_UART_Receive_DMA(&huart2, (uint8_t*)rxdma_f105_buf, sizeof(rxdma_f105_buf));
}