打印

程序进入一个中断的死循环,不知道怎么解决,麻烦帮帮.....

[复制链接]
3536|15
手机看帖
扫描二维码
随时随地手机跟帖
沙发
zhazhahua|  楼主 | 2017-6-16 15:51 | 只看该作者

使用特权

评论回复
板凳
zhazhahua|  楼主 | 2017-6-16 15:52 | 只看该作者
帮自己顶一下

使用特权

评论回复
地板
dirtwillfly| | 2017-6-16 17:25 | 只看该作者
你中断里为什么要放死循环?

使用特权

评论回复
5
zhazhahua|  楼主 | 2017-6-16 17:41 | 只看该作者
dirtwillfly 发表于 2017-6-16 17:25
你中断里为什么要放死循环?

这个不是我放的,我知道中断不能放死循环的函数。这个是ST的头文件里面包含的,运行错误的时候就可能跳到这里。百度上很多说是数组越界或者是堆栈错误,我检查完所有的数组和指针之后,发现没有这些问题出现,还不知道该怎么解决这个问题。。

使用特权

评论回复
6
dirtwillfly| | 2017-6-16 19:55 | 只看该作者
zhazhahua 发表于 2017-6-16 17:41
这个不是我放的,我知道中断不能放死循环的函数。这个是ST的头文件里面包含的,运行错误的时候就可能跳到 ...

你要查的是为什么会进入这个中断

使用特权

评论回复
7
xyz549040622| | 2017-6-16 20:25 | 只看该作者
错误的操作,导致错误中断。单独执行,看看因为什么进去的错误中断

使用特权

评论回复
8
zhazhahua|  楼主 | 2017-6-16 21:05 | 只看该作者
xyz549040622 发表于 2017-6-16 20:25
错误的操作,导致错误中断。单独执行,看看因为什么进去的错误中断

我用keil的debug单步运行,发现是在定时器那里出问题了,但是我之前没错的

使用特权

评论回复
9
oayzw| | 2017-6-17 10:25 | 只看该作者
本帖最后由 oayzw 于 2017-6-17 10:27 编辑

while(1);// 意味着无法从此错误中恢复


引用:

STM32出现HardFault_Handler故障的原因主要有两个方面:

1、内存溢出或者访问越界。这个需要自己写程序的时候规范代码,遇到了需要慢慢排查。

2、堆栈溢出。增加堆栈的大小。

使用特权

评论回复
10
zhazhahua|  楼主 | 2017-6-17 10:57 | 只看该作者
oayzw 发表于 2017-6-17 10:25
while(1);// 意味着无法从此错误中恢复

百度上面都是这样说的,不过我解决了,是时序问题,不是数组越界的问题!

使用特权

评论回复
11
zhazhahua|  楼主 | 2017-6-17 10:58 | 只看该作者
dirtwillfly 发表于 2017-6-16 19:55
你要查的是为什么会进入这个中断

这个我也找不出来啊

使用特权

评论回复
12
dirtwillfly| | 2017-6-17 11:02 | 只看该作者
zhazhahua 发表于 2017-6-17 10:58
这个我也找不出来啊

一步一步运行,看是从哪一句代码跳到这个中断的。

使用特权

评论回复
13
zhazhahua|  楼主 | 2017-6-17 11:18 | 只看该作者
dirtwillfly 发表于 2017-6-17 11:02
一步一步运行,看是从哪一句代码跳到这个中断的。

是我一个定时器4初始化那里跳进去的

使用特权

评论回复
14
lichuanfa| | 2017-6-17 13:54 | 只看该作者
如果程序以前没问题,现在编译后出问题有可能你的编译器出问题了

使用特权

评论回复
15
zxq6| | 2017-6-18 16:59 | 只看该作者
这是程序运行出错了。你要查查具体是哪里进入的。有个取巧的办法,把while1注释掉,单步执行,看出来到哪里去了就可以知道哪里有问题了。

使用特权

评论回复
16
zhazhahua|  楼主 | 2017-6-20 09:32 | 只看该作者
zxq6 发表于 2017-6-18 16:59
这是程序运行出错了。你要查查具体是哪里进入的。有个取巧的办法,把while1注释掉,单步执行,看出来到哪里 ...

嗯嗯,已经解决了!!

使用特权

评论回复
发新帖 我要提问
您需要登录后才可以回帖 登录 | 注册

本版积分规则

22

主题

274

帖子

2

粉丝