打印
[STM32F4]

usart发不出数据,示波器也没波形

[复制链接]
596|10
手机看帖
扫描二维码
随时随地手机跟帖
跳转到指定楼层
楼主
咚了个咚|  楼主 | 2025-3-4 09:00 | 只看该作者 回帖奖励 |倒序浏览 |阅读模式
用USART进行数据收发,显用usart发送数据到pc,但是PC上收不到数据。示波器上也没有波形。我检查了程序,没有发现任何错误。在始化程序中也正确,不知道从哪里入手找问题了?HAL_UART_Transmit( &huart2, (uint8_t*)aTxBuffer, TXBUFFERSIZE, 5000 ) != HAL_OK

使用特权

评论回复
沙发
公羊子丹| | 2025-3-6 07:39 | 只看该作者
你检查过 USART2 的 TX 引脚有没有正确配置成 复用功能 吗?有时候默认可能是 GPIO 模式,导致没有输出。

使用特权

评论回复
板凳
周半梅| | 2025-3-6 07:41 | 只看该作者
确保 USART2 时钟已经打开,在 MX_USART2_UART_Init() 之前加上 __HAL_RCC_USART2_CLK_ENABLE(); 试试看。

使用特权

评论回复
地板
帛灿灿| | 2025-3-6 07:42 | 只看该作者
你的 HAL_UART_Transmit() 返回值是什么?如果 HAL_ERROR 或 HAL_TIMEOUT,可能是硬件没初始化好或者波特率设置有问题。

使用特权

评论回复
5
童雨竹| | 2025-3-6 07:43 | 只看该作者
试试看直接操作寄存器,把 TXE 置位然后手动写入数据,看看能不能发出数据。

使用特权

评论回复
6
万图| | 2025-3-6 07:45 | 只看该作者
你的 aTxBuffer 是静态分配的吗?如果是局部变量,可能在发送时已经被释放,导致 USART 发送失败。

使用特权

评论回复
7
Wordsworth| | 2025-3-6 07:46 | 只看该作者
尝试降低波特率,比如改成 9600,有时候高波特率对硬件信号质量要求更高,可能会影响通讯。

使用特权

评论回复
8
Bblythe| | 2025-3-6 07:47 | 只看该作者
确保 TX 引脚上没有其他外设占用,比如 GPIO 复用错误或者被其他外设复用。

使用特权

评论回复
9
Pulitzer| | 2025-3-6 07:48 | 只看该作者
你用的是什么外设时钟?如果是 HSI,可能精度不够,建议切换到 HSE 试试,看 USART 波特率是否稳定。

使用特权

评论回复
10
Uriah| | 2025-3-6 07:49 | 只看该作者
试试用 HAL_UART_Transmit_IT() 或 HAL_UART_Transmit_DMA() 发送数据,有时候同步发送可能会被 HAL 其他代码影响导致卡住。

使用特权

评论回复
11
Clyde011| | 2025-3-6 07:50 | 只看该作者
如果所有方法都试过了,可以尝试直接操作 USART2->DR 发送数据,看看硬件有没有响应,这样可以排除 HAL 库的问题。

使用特权

评论回复
12
失物招領| | 2025-3-11 01:23 | 只看该作者
当使用USART发送数据到PC但收不到数据时,即使程序看起来没有问题,也可能存在硬件或配置问题

使用特权

评论回复
13
她已醉| | 2025-3-11 02:23 | 只看该作者
确保USARTTX引脚与PCRX引脚(或USBTTL模块的RX引脚)正确连接。确保地线(GND)正确连接

使用特权

评论回复
14
将爱藏于深海| | 2025-3-11 03:32 | 只看该作者
电源检查,确保单片机和外设(如USBTTL模块)的电源稳定。检查电源电压是否在正常工作范围内

使用特权

评论回复
15
温室雏菊| | 2025-3-11 04:37 | 只看该作者
如果使用USBTTL模块,确保模块工作正常。使用回环测试(将模块的TXRX短接)检查模块是否正常

使用特权

评论回复
16
春日负喧| | 2025-3-11 05:36 | 只看该作者
建议使用示波器检查USARTTX引脚是否有信号输出。如果没有信号,可能是程序问题或引脚配置错误。如果有信号但PC收不到数据,可能是波特率或电平不匹配

使用特权

评论回复
17
故意相遇| | 2025-3-11 06:27 | 只看该作者
一般需要检查USART的初始化配置是否正确:波特率、数据位、停止位、校验位是否与PC端一致。时钟配置是否正确(如HCLKPCLK)。引脚复用是否正确(如GPIO_AF

使用特权

评论回复
18
捧一束彼岸花| | 2025-3-11 07:29 | 只看该作者
检查HAL_UART_Transmit函数的参数是否正确:huart2是否指向正确的USART实例。aTxBuffer是否为有效的缓冲区地址。TXBUFFERSIZE是否与缓冲区大小一致。超时时间是否合理(如5000ms

使用特权

评论回复
19
西洲| | 2025-3-11 08:38 | 只看该作者
建议检查SystemClock_Config函数,确保USART的时钟源正确配置。使用STM32CubeMX重新生成时钟配置代码

使用特权

评论回复
20
风凉| | 2025-3-11 09:21 | 只看该作者
一定要确保PC端串口工具的配置与USART一致:波特率、数据位、停止位、校验位

使用特权

评论回复
发新帖 我要提问
您需要登录后才可以回帖 登录 | 注册

本版积分规则

16

主题

16

帖子

0

粉丝