STM32
直播中

douyin8

13年用户 1181经验值
私信 关注
[问答]

NUCLEO-L073RZ USART2样例程序接收不到键盘字符的原因?

请教各位,我在ST软件开发板 NUCLEO-L073RZ 上运行其官网下载的样例程序 USART_Communication_Rx_IT,该程序从终端键入字符,然后程序收到后会重新打印到终端。 在main.h里有一个开关USE_VCP_CONNECTION。 该值为1 时用的USART2,但是不工作,终端收不到字符。该值为0时用的USART1,这个却可以工作。附上这个样例程序。想请教有经验的朋友,看能不能知道原因。

根据样例程序,我写了个printf和scanf的程序。在开发板上运行同样USART2收不到字符,但是可以打印出来。

最后多问另外一个问题。
LL_RCC_SetUSARTClockSource()为啥只能设USART1和USART2的时钟源。为啥不能设USART4和USART5?

多谢各位帮忙!

回帖(1)

糖栗子

2024-4-26 17:21:34
首先,我们来分析一下可能导致NUCLEO-L073RZ USART2接收不到键盘字符的原因:

1. 硬件连接问题:请检查NUCLEO-L073RZ开发板上的USART2引脚是否正确连接到外部设备(如USB转串口模块)。

2. 波特率设置:请确保USART2的波特率设置与您的终端软件(如PuTTY、Termite等)的波特率设置相匹配。

3. USE_VCP_CONNECTION宏定义:您提到当USE_VCP_CONNECTION为1时,使用的是USART2,但无法接收字符。请检查main.h文件中的宏定义是否正确设置。

4. 中断配置:请确保USART2的接收中断(RX)已正确配置并启用。

5. 代码逻辑:检查USART2的接收中断回调函数是否正确实现,以确保接收到的字符能够被正确处理。

关于您提到的LL_RCC_SetUSARTClockSource()函数,这个函数用于设置USART的时钟源。在STM32系列微控制器中,USART1和USART2的时钟源可能不同。请参考您所使用的微控制器的参考手册,了解如何正确设置USART2的时钟源。

针对您的问题,我建议您按照以下步骤进行排查:

1. 确保硬件连接正确,USART2的RX和TX引脚已正确连接到外部设备。

2. 检查USART2的波特率设置,确保与终端软件的设置相匹配。

3. 检查main.h文件中的USE_VCP_CONNECTION宏定义是否正确设置。

4. 检查USART2的中断配置,确保接收中断(RX)已正确配置并启用。

5. 检查USART2的接收中断回调函数,确保接收到的字符能够被正确处理。

6. 如果问题仍然存在,请尝试使用STM32CubeMX工具生成初始化代码,以确保所有配置都是正确的。

7. 参考您所使用的微控制器的参考手册,了解如何正确设置USART2的时钟源。

希望以上建议能帮助您解决问题。如果还有疑问,请随时提问。
举报

更多回帖

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