8121|8

68

帖子

0

TA的资源

一粒金砂(初级)

楼主
 

用STM32的串口做压力测试居然导致CPU复位 [复制链接]

去年末我第一次用STM32做了一款产品,最近完工,做测试。
就是平时我的M32往底下的设备发送命令,然后接收一定数量的数据。
刚开始的时候串口接收一段时间就再也接收不到数据了。采用的是DMA接收和发送.后来查出来是错误标志位未清除引起的,我就打开串口中断只要一有错误位就立刻清除。程序就正常起来了。每次都能正确接收,也没有出现运行一段时间就收不着的现象。
最近用调试软件对着串口不间断的发送数据,发现有时候CPU居然会复位,我就纳闷了。有时候不复位,不复位的情况下我又重新恢复正常,CPU有时候还能收到数据,有时候还是收不到数据了。有时候要过很长一段时间才能再次收到数据。
香主帮忙诊断一下?
此帖出自stm32/stm8论坛

最新回复

                                     详情 回复 发表于 2009-4-26 14:15
点赞 关注
 

回复
举报

64

帖子

0

TA的资源

一粒金砂(初级)

沙发
 

补充一下

我心想,即使我发的数据不是CPU想要的,顶多就是丢弃这一次数据而已,程序里也是这样处理的。也不至于导致复位吧?而且每次接收DMA都设定了接收多少个字节,再多发送也不可能进去了。
还有我已经在中断里打开了错误标志位清除,想不明白为什么还能出现接收不到的情况,发送一直都正常,没有太大的问题
此帖出自stm32/stm8论坛
 
 

回复

64

帖子

0

TA的资源

一粒金砂(初级)

板凳
 

出现错误位就表示需要软件介入,查看错误原因并清除

你这样简单地清除掉错误标志位,而没有查清楚出错的原因,本身就埋下了隐患。

至于CPU复位,肯定是由于程序没有很好地处理错误的情况,导致程序运行错误而造成的。
此帖出自stm32/stm8论坛
 
 

回复

57

帖子

0

TA的资源

一粒金砂(初级)

4
 

香主可能没明白我的意思

既然我清除错误标志位,我当然知道是什么原因了。而且我是特意要给他乱发数据,看他能不能经受住考验。
我想要的结果是即使一段时间总线上出现乱数据,等恢复正常了还是能够照常运行。但这个目标似乎有点难。有时候行有时候不行。

还有复位的事情,香主不知道为什么这么肯定是程序的错误处理不当呢?
串口接收不就那4个错误位么?我只是打开了串口中断,在中断里读取错误标志,如果有置位的就清除,其它没有任何处理。这样处理叫不当?
还有其它的高招?
此帖出自stm32/stm8论坛
 
 
 

回复

77

帖子

0

TA的资源

一粒金砂(初级)

5
 

既然这样你可以在复位后检查一下是什么原因引起的复位

STM32中有多个复位标志。

一个可行的检查办法是在复位后的第一条指令处放一个断点,当产生复位停在这个断点后,检查复位标志,检查内存的一些变量,检查堆栈等内容,这时RAM中的内容就是复位前的状态。

我能够想到的就是程序处理不当,因为没有看到你的现场,我无法判断是什么原因引起的错误,这需要你在调试中找出来。
此帖出自stm32/stm8论坛
 
 
 

回复

73

帖子

0

TA的资源

一粒金砂(初级)

6
 

这个方法可以试试

香主的这个方法可以考虑试试。
现在就是还有点麻烦,就是并不是每次都会复位,只是偶尔有这种现象,等到我仿真的时候它又死活不出来,晕死了
此帖出自stm32/stm8论坛
 
 
 

回复

85

帖子

0

TA的资源

一粒金砂(初级)

7
 

STM32的串口没问题。

可能还是软件问题。

此帖出自stm32/stm8论坛
 
 
 

回复

11

帖子

0

TA的资源

一粒金砂(初级)

8
 

楼上的你有没有试过DMA接收和发送

楼上的你有没有试过串口用DMA接收和发送。然后在数据总线上乱发数据试试?

我这个程序正常情况下确实一点问题都没有。我考虑的是异常情况下串口还能不能恢复正常。如果就此挂掉那就说不过去了。

而且我发这个贴也不是为了说明STM32的串口有问题,而是为了找出这个问题的原因。
此帖出自stm32/stm8论坛
 
 
 

回复

71

帖子

0

TA的资源

一粒金砂(初级)

9
 

软件问题可能性大一些,写个稳定的程序不容易

                                  
此帖出自stm32/stm8论坛
 
 
 

回复
您需要登录后才可以回帖 登录 | 注册

随便看看
查找数据手册?

EEWorld Datasheet 技术支持

相关文章 更多>>
关闭
站长推荐上一条 1/10 下一条

 
EEWorld订阅号

 
EEWorld服务号

 
汽车开发圈

About Us 关于我们 客户服务 联系方式 器件索引 网站地图 最新更新 手机版

站点相关: 国产芯 安防电子 汽车电子 手机便携 工业控制 家用电子 医疗电子 测试测量 网络通信 物联网

北京市海淀区中关村大街18号B座15层1530室 电话:(010)82350740 邮编:100190

电子工程世界版权所有 京B2-20211791 京ICP备10001474号-1 电信业务审批[2006]字第258号函 京公网安备 11010802033920号 Copyright © 2005-2024 EEWORLD.com.cn, Inc. All rights reserved
快速回复 返回顶部 返回列表