UART_DMA问题
接收和发送,都采用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));
}
}
}
请问各位高手,这个现象是怎么回事啊?!
自己顶一个! 此论坛不行啊 没用过CUBE库。。:) 用外设库,处理过DMA。个人感觉DMA适合干定时定量的活,这种接收完再发送,直接用串口的send和receive函数不就可以了。。。 xiaoboxiaobo 发表于 2015-10-5 23:57
用外设库,处理过DMA。个人感觉DMA适合干定时定量的活,这种接收完再发送,直接用串口的send和receive函数 ...
解决了:一个字节一个字节接收;
打开串口全局中断。 发送时修改一下发送DMA空间,一般是DMA空间满以后才会产生DMA中断。 安 发表于 2015-10-8 16:21
发送时修改一下发送DMA空间,一般是DMA空间满以后才会产生DMA中断。
嗯,谢谢! 顶一个! 木木鱼 发表于 2015-10-10 22:30
顶一个!
谢谢,希望能带出一些问题来让大家思考讨论哈
页:
[1]
2