MEGA64移植到MEGA2560,程序中有指针,运行出错,ICC7.22,为何?
本帖最后由 liudingding 于 2020-12-16 10:18 编辑如题,将M64程序移植到M2560,在一处出错,具体程序出什么错不详,现象是上位机收不到数据出错,经检查是该处有指针,下面两行是主程序中的两句,第一句程序没问题,接着第二句程序调用程序,就不行了,第一句程序中也有指针,和第二句差不多但能运行下去,好像是能运行一次但仅一次就不能再次到达该位置,这个程序在M16、M64中运行没问题,没修改移植过来
Flash_Write(&UART_RX_Buffer,(IAP_Fram-1)*PAGE_LARGE);
if(Flash_Verif(&UART_RX_Buffer,(IAP_Fram-1)*PAGE_LARGE))
unsigned char Flash_Verif(unsigned char *data,unsigned int Head_Address)
{
unsigned int i;
DisableISR();
for(i=0;i<PAGE_LARGE;i++)
{
if(*data==Read_flash(Head_Address+i))//如果该行改为if(1)则程序运行,随机改,if(*data==8)不行
{
data++;
}
else
{
return 0;
}
}
EnableISR();
return 1;
}
2560 地址超过了 64K,基本上你只用 16bit 的 uint 传地址就是失败。过了下你的代码没见着 RAMPZ 寄存器,好好研究手册去吧
页:
[1]