芯片是STM32H750,一次接收1028个字节,
HAL_UARTEx_ReceiveToIdle_DMA 传入的数组长为1028,
这是代码:
[C] 纯文本查看 复制代码 RX_Data_num = 0;
RX_complete_flag = 0;
HAL_UARTEx_ReceiveToIdle_DMA(&huart2, RX_Data, 1028);
DMA中断优先级:0
使用usart2,中断优先级:2
现象是,第一次进回调函数接收到一半,第二次进回调函数全部接收完成。
这是回调函数:
[C] 纯文本查看 复制代码 void HAL_UARTEx_RxEventCallback(UART_HandleTypeDef *huart, uint16_t Size)
{
if(huart == &huart2){
RX_complete_flag = 1;
RX_Data_num=Size;
if(RX_Data_num < 64){
RX_Data[RX_Data_num] = '\0';
}
U_OR_U = uart;
}
}
如果RX_complete_flag==1之后,延时50ms,可以看到完整的数据。
有人知道怎么回事吗?
|