各位好,我串口推信三种方式(轮询,接收中断,DMA)都使用过了,我的前两种当发的长度超过一定数值后就发生丢字节,DMA没有问题,我用的STM32F411,结合cube生成的工程,哪位帮我看看嘛。 我轮询部分的代码: while(1){ while(HAL_UART_Receive(&huart6, (uint8_t *)rx_buffer, 1, 10) != HAL_OK) {} HAL_UART_Transmit(&huart6,(uint8_t *)rx_buffer,1,10); } 非常感谢! |
串å£è°è¯ç»æ
while (1)
{
while(HAL_UART_Receive(&huart6, (uint8_t *)rx_buffer+totalRecv, 1, 1000) == HAL_OK)
{
totalRecv++;
}
if(totalRecv>0){
HAL_UART_Transmit(&huart6,(uint8_t *)rx_buffer,totalRecv,1000);
totalRecv = 0;
}
}
当然,效率最高的还是DMA中断,但因为楼主所接到的任务是串口上不用中断,所以一直苦恼了一天。
希望对各位有帮助。
评分
查看全部评分
直接改库还是不太好的,还不如不用它给的函数。