嵌入式技术william hill官网
直播中

h1654155272.9717

8年用户 1259经验值
擅长:电源/新能源
私信 关注
[问答]

求教STM32移植RT-Thread后竟无法使用串口2与esp8266进行通信

STM32移植RTT后,无法使用串口2与esp8266通信,这是什么原因?
移植的是RT-Thread Nano版本的,esp8266单独用串口测试AT指令能正常工作,引脚连接正常,但是使用mcu往串口3发送指令时,无反应,接收缓存区为空
清除标志那里修改成usart3了,出现的情况还是一样




回帖(5)

大红枣

2022-5-6 14:18:10
1
举报

h1654155272.9717

2022-5-6 14:18:35
串口三测试过直接连转串口,重定义printf可以打印到串口助手上,但是没试过在串口助手上发到mcu
举报

juju宇哥

2022-5-6 14:18:44
是否可以将串口3的外接线接到pc的串口上查看tx端数据,和rx端数据,查看下tx rx 是否正常。或者用示波器抓下tx rx 的包
举报

chumowei

2022-5-6 14:18:53
别在中断里头rt_enter_critical,这样使用不规范哈。另外你的程序注释的串口是PB11 PB12但是你却初始化的PA11 PA12,还有GPIO时钟使能是GPIOB啊,先检查好程序呢,另外标题说的串口2但是代码确实USART3呢
举报

h1654155272.9717

2022-5-6 14:19:09
问题最后已经解决,我总结一下排错的过程:

1、查看线路是否存在故障,引脚和复用功能是否对应(不得不说我太马虎了,使用usart3时使用的线是坏掉的!!)。
2、查看复用功能是否冲突。我同时开启了tim2和usart2,这两个复用功能冲突了,因此最后改用usrt3
3、ISR中空闲中断问题,最后我关闭了空闲中断,只开接收中断,把数据存到buff,溢出则置零。在需要调用usart3的程序中,先对buff进行清空。
总结:在ISR中避免数据处理,遵循快进快出原则。对数据接受区buff设置一定属性,如非空标志、溢出标志、buff大小等,便于其他程序块调用和处理。
举报

更多回帖

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