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.

请问IDataStack和XDataStack溢出该怎么解决

各位大神:

遇到一个问题,同样的程序下载到两个版本的硬件里,A版硬件正常运行,B版硬件操作按键就频繁出现IDataStack和XDataStack溢出的现象。

B版硬件只是在A版的基础上加了充电电路,LED的IO定义稍有变动,请问是要通过修改Stack容量范围来解决吗?如果是该怎么修改?

  • 最好单步执行下,看看哪步溢出,也可能是软件bug

  • 在线仿真了几天,感觉出现Stack溢出的情况经常是跟触发按键同时出现的,遇到一个怪现象:

    我的硬件按键按下时与GND相连,平时是高电平。所以我修改了协议栈的一些定义,

    1. 将按键中断方式改为   #define HAL_KEY_SW_6_EDGE     HAL_KEY_FALLING_EDGE

    2. 按键活跃状态改为低电平

    #if defined (HAL_BOARD_CC2530EB_REV17)
    #define PUSH1_POLARITY ACTIVE_LOW

    修改这两处之后,会出现无法自动联网,设备状态一直处于DEV_INIT状态或者出现之前提的Stack溢出现象,应该如何解释呢?求大家帮忙

  • 发现问题了,出现堆栈溢出的原因是我新版本硬件的充电电路问题,在运行过程中电压不正常了。总结造成堆栈溢出的原因有

    1. 频繁进某个中断,使中断地址无法释放又压入新地址

    2. 硬件突然复位,但又不会重新回到Main函数,比如我这种硬件电压异常的情况

    还有其他原因的话,请大家再补充吧