stm32-hal库(5)--usart串口通信三种模式(主从通信)(关于通信失败和串口不断发送数据问题的解决)

问题:

最近发现,stm32cubemx最新版本f1系列的hal库(1.85版本)生成的hal库,其中stm32f1xx_hal_uart.c的库文件中,其串口发送接收存在一些问题:

1.没有使用 __HAL_LOCK__HAL_UNLOCK 宏,锁机制。

2.pdata8bitspdata16bits 未初始化为 NULL,可能会导致未定义行为。

3.在遇到超时错误时,没有恢复 huart->RxState 状态。

这样子会出现什么问题呢?

1.串口中断进不去,主机发送消息,从机无回应

2.轮询模式下,打开串口,其会不断给电脑串口发信息,直到几千几万条后溢出。

(也有可能是我没理解到位,如果知道原因的大佬,可以在评论区给点意见)

解决方法:

我将stm32cubemx的hal库版本进行了修改,改成了1.81版本,进行通信,实验成功。

步骤如下:

1.点击库管理

2.找到自己芯片库

如果你是1.85版本,如果前面框为绿色,选中然后下面点击移除就行。

点击1.81版本,进行安装。下图2框取消勾选,3框选择1.81。

其他配置和上篇文章一致:

STM32-hal库学习(4)--usart/uart通信 (单向通信)(同时显示在oled)-优快云博客

1.轮询模式

什么是轮询模式?

轮询模式利用阻塞模式收发数据

        HAL_UART_Transmit():串口发送数据,使用超时管理机制
        HAL_UART_Receive(): 串口接收数据,使用超时管理机制

        其用于在没有中断机制或DMA机制的情况下,主动等待并处理外设的状态变化。在轮询

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值