请问IDataStack和XDataStack溢出该怎么解决
时间:10-02
整理:3721RD
点击:
各位大神:
遇到一个问题,同样的程序下载到两个版本的硬件里,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函数,比如我这种硬件电压异常的情况
还有其他原因的话,请大家再补充吧