Possible IDATA stack overflow detected为什么?
时间:10-02
整理:3721RD
点击:
自己做的ZIGBEE(cc2530)板子,程序下载好之后,调试会出现如下错误:
Sun Jan 25 22:34:32 2015: Warning: Possible IDATA stack overflow detected. Reset target to re-enable overflow check
Sun Jan 25 22:34:32 2015: Warning: Possible IDATA stack overflow detected. Reset target to re-enable overflow check
Sun Jan 25 22:34:32 2015: Warning: Possible IDATA stack overflow detected. Reset target to re-enable overflow check
Sun Jan 25 22:34:33 2015: Warning: Possible IDATA stack overflow detected. Reset target to re-enable overflow check
Sun Jan 25 22:34:33 2015: Warning: Possible IDATA stack overflow detected. Reset target to re-enable overflow check
Sun Jan 25 22:34:33 2015: Warning: Possible IDATA stack overflow detected. Reset target to re-enable overflow check
Sun Jan 25 22:34:34 2015: Warning: Possible IDATA stack overflow detected. Reset target to re-enable overflow check
Sun Jan 25 22:34:36 2015: Warning: Possible IDATA stack overflow detected. Reset target to re-enable overflow check
Sun Jan 25 22:34:36 2015: The stack 'IdataStack' is filled to 100% (64 bytes used out of 64). The warning threshold is set to 90.%
Sun Jan 25 22:34:36 2015: The stack pointer for stack 'IdataStack' (currently IData:0x00) is outside the stack range (IData:0xC0 to IData:0x100)
具体程序 如下:
#include <ioCC2530.h>
#define uint unsigned int
#define uchar unsigned char
//定义控制灯的端口
#define RLED P0_1 //定义LED1为P10口控制
//函数声明
void Delay(uint); //延时函数
void InitIO(void); //初始化LED控制IO口函数
/****************************
//延时
*****************************/
void Delay(uint n)
{
uint i;
for(i = 0;i<n;i++);
for(i = 0;i<n;i++);
for(i = 0;i<n;i++);
for(i = 0;i<n;i++);
for(i = 0;i<n;i++);
}
/****************************
//初始化IO口程序
*****************************/
void InitIO(void)
{
P0DIR |= 0x13; //P10、P11、P14定义为输出
RLED = 1;
}
/***************************
//主函数
***************************/
void main(void)
{
InitIO(); //初始化LED灯控制IO口
while(1) //死循环
{
RLED = !RLED; // LED1灯闪一次
Delay(10000);
}
}
Sun Jan 25 22:34:32 2015: Warning: Possible IDATA stack overflow detected. Reset target to re-enable overflow check
Sun Jan 25 22:34:32 2015: Warning: Possible IDATA stack overflow detected. Reset target to re-enable overflow check
Sun Jan 25 22:34:32 2015: Warning: Possible IDATA stack overflow detected. Reset target to re-enable overflow check
Sun Jan 25 22:34:33 2015: Warning: Possible IDATA stack overflow detected. Reset target to re-enable overflow check
Sun Jan 25 22:34:33 2015: Warning: Possible IDATA stack overflow detected. Reset target to re-enable overflow check
Sun Jan 25 22:34:33 2015: Warning: Possible IDATA stack overflow detected. Reset target to re-enable overflow check
Sun Jan 25 22:34:34 2015: Warning: Possible IDATA stack overflow detected. Reset target to re-enable overflow check
Sun Jan 25 22:34:36 2015: Warning: Possible IDATA stack overflow detected. Reset target to re-enable overflow check
Sun Jan 25 22:34:36 2015: The stack 'IdataStack' is filled to 100% (64 bytes used out of 64). The warning threshold is set to 90.%
Sun Jan 25 22:34:36 2015: The stack pointer for stack 'IdataStack' (currently IData:0x00) is outside the stack range (IData:0xC0 to IData:0x100)
具体程序 如下:
#include <ioCC2530.h>
#define uint unsigned int
#define uchar unsigned char
//定义控制灯的端口
#define RLED P0_1 //定义LED1为P10口控制
//函数声明
void Delay(uint); //延时函数
void InitIO(void); //初始化LED控制IO口函数
/****************************
//延时
*****************************/
void Delay(uint n)
{
uint i;
for(i = 0;i<n;i++);
for(i = 0;i<n;i++);
for(i = 0;i<n;i++);
for(i = 0;i<n;i++);
for(i = 0;i<n;i++);
}
/****************************
//初始化IO口程序
*****************************/
void InitIO(void)
{
P0DIR |= 0x13; //P10、P11、P14定义为输出
RLED = 1;
}
/***************************
//主函数
***************************/
void main(void)
{
InitIO(); //初始化LED灯控制IO口
while(1) //死循环
{
RLED = !RLED; // LED1灯闪一次
Delay(10000);
}
}
栈溢出了,建议你去看看IAR配置是否有问题?是配置的256K BANK 组?