|
STM32F103芯片,本人自己组织工程代码,串口1用于打印调试,串口3用于与电脑端网页程序通讯,偶尔出现程序卡死,电脑不能正常通信,只能重启板子解决。一开始也没在意,后来这种情况不是偶尔了,比较频繁。 现将排查过程说明如下:
1 首先 集成cmbacktrace,看看堆栈情况,死在哪个文件哪一行,很不幸pc值为0x80000000,查不到
2 因此 怀疑是不是堆栈的问题,中断的问题,中间省略5000字,哎。。。无果
3 偶然 从论坛看到 keil 仿真串口方式,需要虚拟串口软件配合,虚拟配对串口com5,com6,keil仿真界面左下角输入MODE COM6 115200,0,8,1 和 ASSIGN COM6 <S3IN>S3OUT,将com6和uart3链接,串口工具链接com5,每隔200ms发一次数据,4,5次就把我的程序挂住了,但是就是不知挂在何处。
4 毅然 抛弃自有代码,用硬汉的V4-003_串口和PC机通信(串口中断、FIFO机制)工程做试验,如果可以直接用就好了,好事情是仿真运行不会挂住了,我猜因为fifo的原因吧,but 200ms 还是会丢数据
5 崩溃! 我想之前我写的程序死机,挂住可能也是丢数据导致的,写的比较简陋。将业务代码与硬汉的工程合并上传,希望硬汉兄帮帮忙!!!
6 跪谢!
V4-003-hyx.zip
(9.56 MB, 下载次数: 6)
说明
PC<-->UART3 协议因为是js页面通信的原因,采用jsonp协议,为了解析方便,每个交互命令以 \r\n结尾
附加说明,keil仿真 串口链路:
pc 虚拟com5 <--> 虚拟com6 <--> keil uart3
pc串口工具接com5发一个命令,keil仿真起码要3,4秒时间才输出到uart3
实测板子,串口3与js脚本无法通信,
|
|