接收和发送,都采用DMA处理,实现串口一次发送4个字节(如aa bb cc ee)给MCU,将收到的这组数据再发给串口助手。但是以当每隔1s发送一组数据的方式时,在发送20个字节(5组数据)才收到4096个字节。主函数如下: int main(void) { HAL_Init(); SystemClock_Config(); /* Initialize all configured peripherals */ MX_GPIO_Init(); MX_DMA_Init(); MX_USART2_UART_Init(); /* USER CODE BEGIN 2 */ if(yy==1) { yy=2; HAL_UART_Receive_DMA(&huart2,fyRxData,sizeof(fyRxData));// } while (1) { if(TX_counter==H_CNT) { TX_counter=0; HAL_UART_DMAResume(&huart2);//Resumes the DMA Transfer of receive. HAL_Delay(1); HAL_UART_Receive_DMA(&huart2,fyRxData,sizeof(fyRxData));// } if(RX_counter==H_CNT) { RX_counter=0; HAL_UART_DMAResume(&huart2);//Resumes the DMA Transfer of send. HAL_Delay(1); HAL_UART_Transmit_DMA(&huart2,fyTxData,sizeof(fyTxData)); } } } 请问各位高手,这个现象是怎么回事啊?! |
解决了:一个字节一个字节接收;
打开串口全局中断。
嗯,谢谢!
谢谢,希望能带出一些问题来让大家思考讨论哈
以后会慢慢带来的,现在还在学习中。