This thread has been locked.

If you have a related question, please click the "Ask a related question" button in the top right corner. The newly created question will be automatically linked to this question.

5438a程序跑飞问题

你好:

我最近在使用5438a这块板子,写了一个不是特别大程序,但是程序他老是跑飞,看了好久也不清楚是什么原因导致的。不过这个有个提醒说是堆柵溢出了,像这种情况该怎么处理啊?

  • 你好,

    程序跑飞这个问题说起来范围太宽泛,能不能具体一些。

    你可以尝试定时点一个灯来提示程序是否还在运行中。

    另外程序跑飞你要注意供电系统是否正常,复位电路是否正常。

    另外你对看门狗使用了吗?

  • 你好

    就是我是关了看门狗的,我想做的就是用单片机控制一个升压电路,让他达到恒流输出,程序的话就是中断使用的也不是特别多。就是为了使用低功耗我采用的是中断触发扫描键盘(P1口接键盘),还有个要用中断的地方就是ad那里会使用到中断,所以应该不会是程序的问题。然后就是说我单片机是用仿真器供电的,升压电路是外面引进的一个12v的电压,他们之间共了地的但是是用的那种跳线共的地(ad检测口共地,pwm输出那里共地)这是我控制电路大致的一个情况。然后就是如果不接升压电路直接用键盘输入一个值经过一个算子得到的值与ad采样回来的值进行比较pwm的确是会改变的,但是一接上升压电路然后单片机就开始不正常工作了,像液晶乱码,自动复位等。。还有一个问题就是,我在下载程序的时候以前一般都是点一下run(用的是IAR软件)但是这一次我整整点了有28次之多的run才把程序下载进单片机中,还有就是有的时候我在线仿真的时候假如就是程单步运行到一个子函数a()的时候,他可能就是不会进去a()而是自己呈现出一种就是像点了run一样的现象,但是程序实际上是没有下载进去的,这些现象都是调这个程序所遇见的,一直在困惑中。

  • 你好,

    先回答你最后一个问题,这个我也有遇到过,你如果想看看A()里面的东西,建议直接在里面设置断点,这样比你单步运行靠谱。

    现在看起来程序复位也不是看门狗的原因了。

    软件程序跑飞的情况真的很少,除非你代码直接有用goto语句,或者指针乱指。

    但是,听你的描述我还是重点怀疑硬件上,MCU供电是仿真器,那你系统板应该不是仿真器供电吧。

    你可以帮我测试一下,

    在你程序初始化开头设置断点,你看程序跑起来后,还会进入main函数一开始的断点吗?

    另外,你两个中断没有嵌套吧?

  • 你好:

          现在单片机基本可以实现功能,但是就是下载的时候会出现让人很不能理解的地方,就是下载的时候会出现很多次的复位

    但是最后都可以正常下载进去,只是下载进去后我必须按一下单片机上的复位按键才可以正常工作,这个我就不知道什么原因了。还有就是我的中断是没有嵌套的,而且中断中执行的东西也比较地少,只有一两句赋值语句。