原帖见 http://bbs.21ic.com/icview-700722-1-1.html
只要数组总的元素的个数大于某个值,不管是几个数组 roll_left(unsigned int ×p,unsigned int size); 一搞进去单片机就异常,即使将数组分成几个 分别运行也不行啊
主函数
int main(void)
{
SYS_Init(); //初始化
IO_Init();
P1->DOUT = 0; //点亮上下显示的蓝灯
delaytime=65535;
while( delaytime--);
while(1)
{
P2->DOUT = 0xff;
P0->DOUT = 0xff;
delaytime=65535;
while( delaytime--);
while(1)
{
//下面是花样显示函数
//函数都是经过测试,按照自己预期的结果运行的
roll_up(wfcsu1,wfcsu1_size);
flash(wfcsu1,wfcsu1_size);
roll_left(wfcsu,wfcsu_size); //wfcsu是个数组 wfcsu_size是数组大小 以下同样
roll_left(wfcsu5,wfcsu5_size);
roll_left(wfcsu1,wfcsu1_size);
}
}
}
上面是主函数 最下面3行 单独运行其中任何一个都没问题 数组定义为 uint16_t wfcsu[] ={ /*元素个数超过1280个,芯片就异常,即使定义多个数组,数组中总的元素的个数大于1280个,芯片仍然异常*/}
芯片用的是 M0516LBN ldrom 4k ram 4k aprom 64k data 4k
运行roll_left(wfcsu,wfcsu_size);
roll_left(wfcsu5,wfcsu5_size);
因为wfcsu5_size+wfcsu_size >1280 数组了不行
运行roll_left(wfcsu,wfcsu_size);
roll_left(wfcsu1,wfcsu1_size);
或
运行roll_left(wfcsu1,wfcsu1_size);
roll_left(wfcsu5,wfcsu5_size);
因为wfcsu5_size+wfcsu1_size<1280
wfcsu_size+wfcsu1_size<1280 都可以正常运行
|