void UART_TestCase(void)
{
uint32_t tickStart = 0;
printf("dma transmit test case\n");
printf("gState:%#x, RxState:%#x\n", huart1.gState, huart1.RxState);
if(HAL_UART_Transmit_DMA(&huart1, (uint8_t*)aTxBuffer, strlen((const char *)aTxBuffer)) != HAL_OK) {
printf("HAL_UART_Transmit_DMA err!!!\n");
return;
}
sprintf((char *)tempBuffer, "wait before gState:%#x, RxState:%#x\n", huart1.gState, huart1.RxState);
tickStart = HAL_GetTick();
while(!g_uartTxReady);
g_uartTxReady = RESET;
tickStart = HAL_GetTick() - tickStart;
printf("%s", tempBuffer);
printf("wait after gState:%#x, RxState:%#x\n", huart1.gState, huart1.RxState);
printf("dma transmit cost tick:%ld\n", tickStart);
printf("dma receive test case\n");
if(HAL_UARTEx_ReceiveToIdle_DMA(&huart1, (uint8_t *)aRxBuffer, sizeof(aRxBuffer)) != HAL_OK) {
printf("HAL_UARTEx_ReceiveToIdle_DMA err!!!\n");
return;
}
while(!g_uartRxReady)
{
printf("wait while gState:%#x, RxState:%#x\n", huart1.gState, huart1.RxState);
HAL_Delay(500);
}
printf("wait after gState:%#x, RxState:%#x\n", huart1.gState, huart1.RxState);
printf("dma receive data success\n");
printf("aRxBuffer:%s\n", aRxBuffer);
g_uartRxReady = RESET;
memset(aRxBuffer, 0, sizeof(aRxBuffer));
HAL_UARTEx_ReceiveToIdle_DMA(&huart1, (uint8_t *)aRxBuffer, sizeof(aRxBuffer));
}
|