我修改的项目ESTA_TwoBoards_ComDMA(为nucleo-144 H743 ZI 2)与DMA接收和DMA发送循环只有第一次接收到的数据是好的。 将PC6与PC7连接,以便回环测试。 以下代码: do{
memset( aRxBuffer, 0x00, sizeof(aRxBuffer)); if(HAL_UART_Receive_DMA(&UartHandle, (uint8_t *)aRxBuffer, RXBUFFERSIZE) != HAL_OK) { Error_Handler(); } if(HAL_UART_Transmit_DMA(&UartHandle, (uint8_t*)aTxBuffer, TXBUFFERSIZE)!= HAL_OK) { Error_Handler(); } while( HAL_UART_GetState(&UartHandle) != HAL_UART_STATE_READY) { BSP_LED_Toggle(LED1); HAL_Delay(100); } testCompare = memcmp(aRxBuffer,aTxBuffer, sizeof(aRxBuffer)); } while( 1 ); 只有第一次aRxBuffer包含aTxBuffer的内容。 用逻辑分析仪可以看到传输数据是好的。 还看到触发了中断回调函数HAL_RxCpltCallback(),但aRxBuffer中没有数据。 第二次接收数据需要特殊技巧吗?
|