F28026程序跑飞,知道的朋友帮个忙啊(问题已经解决,楼下给出了方法,关心的来看下)

2019-03-26 16:45发布

定义了一个函数fun,和一个中断服务函数isr,都在内存中跑。fun里面定义一些局部变量,并且这个函数只有isr会调用。现在发现如果这个函数比较大(其实也不是很大,就几十行)情况下,程序就会跑飞。如果把局部变量定义为静态变量就没有问题。各位大虾碰到过这种问题吗?郁闷了好几天了,帮帮忙吧!!! [ 本帖最后由 w00d 于 2012-3-6 13:50 编辑 ] 此帖出自小平头技术问答
友情提示: 此问题已得到解决,问题已经关闭,关闭后问题禁止继续编辑,回答。
8条回答
w00d
2019-03-27 23:19
问题彻底解决了,说一下方法,大家引以为戒吧。
我的中断是ADC中断,而且ADC中断由pwm驱动。在没有修改程序前,经常会发生中断溢出情况,特别是在复位后最容易发生(大概是3~5次复位就会发生一次)。而且有时候发生中断溢出后会没法再次进入中断。
现在重新修改初始化步骤如下:
1.打开中断允许。
2.打开ADC
3.打开PWM
另外,清中断必须在中断服务函数的起始位置。
按照以上方法,我写了一个测试程序,进行了1366次复位,没有一次发生中断溢出情况
为了提高程序健壮性,我在中断程序的结束位置检查中断溢出标志,如果溢出了则再清一次中断。
程序还在测试,迄今为止一切正常。

一周热门 更多>