关于串口1和串口2的问题希望有大哥哥帮忙指点

2019-08-12 17:20发布

手里是一块使他们stm32与一个sim卡模块相连(USART2),我需要在电脑上连接32的USART1发送AT指令然后32通过串口2转给SIM卡模块,
SIM卡模块接收到AT指令会有一个返回,然后32 接收串口2 发回的数据在从串口1 发送给电脑,但是现在试了很多方法都不行;
现象:串口2接收的时候只街道第一条数据,往后的每次循环中都不能收到数据
主要代码和现象截图:操作的时候没有接任何的模块,我怕出问题,所以就手动用串口调试相互对发的数据;l
1.png 执行的现象 执行的现象

NEW.zip (339.53 KB, 下载次数: 279) 2017-10-19 15:13 上传 点击文件名下载附件


友情提示: 此问题已得到解决,问题已经关闭,关闭后问题禁止继续编辑,回答。
该问题目前已经被作者或者管理员关闭, 无法添加新回复
11条回答
执迷
1楼-- · 2019-08-12 23:06
大概是收到第一条数据还没读,又来一条数据,导致寄存器溢出了。查一下寄存器。
AoRuiao
2楼-- · 2019-08-13 04:31
 精彩回答 2  元偷偷看……
AoRuiao
3楼-- · 2019-08-13 08:51
yklstudent 发表于 2017-10-19 15:34
改版了,终于又可以回帖了???

什么意思?
一起哈皮
4楼-- · 2019-08-13 10:15
你自己调试不就知道了,哪部分出问题就调试那部分,在串口2打个断点,PC发不同信息看能不能进断点。
每次都能进那就是你SIM程序写的有问题,考虑延时、判断等是否有bug,继续断点调试。
不能进就另开工程专调串口2。
哆啦A萌
5楼-- · 2019-08-13 13:00
本帖最后由 哆啦A萌 于 2017-10-19 17:00 编辑

我看了一下你的代码发现了你代码中就有几个很明显的问题,清除USART2的地方应该是每次读取了数据以后,而不是每一次循环都清除;清除标志位你判断的是&0x8000,清除该标志位却是直接令其等于0也是很大的问题,再者你确定哪个模块通过串口发送的结束符是‘r'' '?,整体上我感觉你这个代码逻辑比较混乱,出问题也是很正常
正点原子
6楼-- · 2019-08-13 15:42
仿真找bug啊

一周热门 更多>