单片机怎么会复位呢?
看门狗什么都没加,程序没加XDATA时运行了20天都没问题,然后加了XDATA,运行时会自动复位,增加的变量:ucharxdatastore_lc[12];ucharxd...
看门狗什么都没加,程序没加XDATA时运行了20天都没问题,然后加了XDATA,运行时会自动复位,
增加的变量:
uchar xdata store_lc[12];
uchar xdata a_add=0,b_add=0,c_add=0,d_add=0;
用法:
if(a_add==3)
write_add(123,store_lc[0]);
if((wg==liao)&&(number==1))
{
a_add++;
if(a_add==1)store_lc[0]=lc;
if(a_add==2)store_lc[1]=lc;
if(a_add==3)store_lc[2]=lc;
if(a_add==3)
store_lc[0]=(store_lc[0]+store_lc[1]+store_lc[2])/3;
if(a_add>3)a_add=3;
}
b_add,c_add,d_add。程序和这相似。
是不是XDATA声明太多,导致堆栈空间不够,堆栈溢出了? 展开
增加的变量:
uchar xdata store_lc[12];
uchar xdata a_add=0,b_add=0,c_add=0,d_add=0;
用法:
if(a_add==3)
write_add(123,store_lc[0]);
if((wg==liao)&&(number==1))
{
a_add++;
if(a_add==1)store_lc[0]=lc;
if(a_add==2)store_lc[1]=lc;
if(a_add==3)store_lc[2]=lc;
if(a_add==3)
store_lc[0]=(store_lc[0]+store_lc[1]+store_lc[2])/3;
if(a_add>3)a_add=3;
}
b_add,c_add,d_add。程序和这相似。
是不是XDATA声明太多,导致堆栈空间不够,堆栈溢出了? 展开
3个回答
展开全部
我觉得声明数据类型不会导致堆栈空间不够,堆栈只有在子程序调用层数过多,或者通过堆栈传递参数过多,可能会导致堆栈溢出,首先确定程序在什么地方复位,有很多可能导致单片机复位,比如错写看门狗,中断向量未设置,等等。
已赞过
已踩过<
评论
收起
你对这个回答的评价是?
展开全部
复位电路的工作波形
已赞过
已踩过<
评论
收起
你对这个回答的评价是?
推荐律师服务:
若未解决您的问题,请您详细描述您的问题,通过百度律临进行免费专业咨询