stm32F411和hal库串口轮询方式接收丢失字节

2019-07-14 16:16发布

各位好,我串口推信三种方式(轮询,接收中断,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);
        }
非常感谢!

友情提示: 此问题已得到解决,问题已经关闭,关闭后问题禁止继续编辑,回答。
该问题目前已经被作者或者管理员关闭, 无法添加新回复
5条回答
年年二设
1楼-- · 2019-07-14 21:54
 精彩回答 2  元偷偷看……
年年二设
2楼-- · 2019-07-14 22:07
新的运行结果,虽然相对慢一点,但结果是正确的
yuxiangxyz
3楼-- · 2019-07-14 22:29
HAL库你要先定义好你的一个要接收的数组,及可以最大接收到的数据最大长度,比如你设的长度是10,那它只能一次性接收10个数据
TOPCB
4楼-- · 2019-07-15 02:54
用中断的方式接收,缓冲区大些。我在用做GSM的时候,我就自己把他的中断改了。改成自己处理接收。
nvuuweew
5楼-- · 2019-07-15 07:21
一调用Transmit 就不代表发送ok了,HAL专门有个 HAL_Status  需要判断处理下。
直接改库还是不太好的,还不如不用它给的函数。

一周热门 更多>