ST意法半导体
直播中

余温重顾

9年用户 912经验值
擅长:可编程逻辑 嵌入式技术 EMC/EMI设计
私信 关注
[问答]

请问为什么在使用标准CubeMX代码和HAL函数以1线(半双工)UART模式传输后会设置溢出标志?

我正在使用“NUCLEO-U575ZI-Q”开发板并使用 STM32CubeIDE 1.6.1 进行编译。我想将 PC10 引脚用作单线(半双工)UART 引脚,并使用 CubeMX 生成具有以下设置的代码:
模式:单线(半双工)
硬件流控制:禁用
波特率:57600 Bits/s
字长:8 位(包括奇偶校验)
奇偶性:无
停止位:2
数据方向:接收和发送
过采样:16 个样本
单个样本:禁用
时钟预分频器:1
Fifo Mode:先进先出模式禁用
Txfifo Threshold: 1 八全配置
Rxfifo Threshold: 1 八全配置
自动波特率:禁用
Tx 引脚有效电平反转:禁用
Rx 引脚有效电平反转:禁用
数据反转:禁用
TX 和 Rx 引脚交换:禁用
超限:启用
DMA 出现 RX 错误:启用
MSB 优先:禁用
当我尝试以下代码时,似乎 UART4-> ISR 寄存器中的 ORE 位(溢出错误)随后被设置(顺便说一句,该语句有效,即它在 Teraterm 中显示 Hello):
HAL_UART_Transmit(&huart4, (const uint8_t*)"rnHello", strlen("rnHello"), 100);
在 CubeMX 中启用“UART4 全局中断”没有帮助,我仍然遇到溢出错误。这是一个问题,因为如果我,例如,之后接收 UART,那么它会由于溢出错误而自动失败。我究竟做错了什么?







回帖(1)

张虎豹

2022-12-2 14:42:55
通过设置Overrun: Disable解决
举报

更多回帖

发帖
×
20
完善资料,
赚取积分