初级会员

- 积分
- 91
- 金钱
- 91
- 注册时间
- 2014-8-24
- 在线时间
- 76 小时
|
5金钱
1.首先定义1个二位数组,再定义4个一位数组。
u8 *pa,*pb,*pc,**px,*py;
2。再分别申请内存
px = (u8 **)mymalloc(sramx,(sizeof(u8 *) * Total_channel_number)); //分配指针数组
px[0] = (u8 *)mymalloc(sramx,(sizeof(u8) * Total_channel_number * lenlen));//一次性分配所有空间
for(i=1; i<Total_channel_number; i++)
{
px[i] = px[i-1] + lenlen;
}//采用如上内存分配方法,意味着将q的值初始化为m*n的二维数组首地址,且这块内存连续
pa=mymalloc(0,set_Collection_points+2);
pb=mymalloc(0,set_Collection_points+2);
pc=mymalloc(0,set_Collection_points+2);
py=mymalloc(0,len4);
3.上传的数据是*pa,*pb,*pc.我的pa[0],pa[1],pb[0],pb[1],pc[0],pc[1]放的是数据的协议,从pa[2],pb[2],pc[2]开始分别保存ad的高中低3个字节。
pa[0]=0x02;
pa[1]=0x55;
pb[0]=0x04;
pb[1]=pd[4];
pc[0]=0x55;
pc[1]=pd[5];
//外部中断0服务程序
void EXTI0_IRQHandler(void)
{
abc++;
if(abc==set_sampling_rate)
{
pa[ADS1271_num+2]=SPI1_ReadWriteByte(0xff);
pb[ADS1271_num+2]=SPI1_ReadWriteByte(0xff);
pc[ADS1271_num+2]=SPI1_ReadWriteByte(0xff);
ADS1271_num++;
abc=0;
}
if(ADS1271_num==set_Collection_points)
{
ADS1271_num=0;
flag=1;
PWDN=0;
EXTI->IMR&=~(1<<0);
}
4.采样一小次发送完毕之后,将采样一小次将数据保存外部SRAM**px中暂存
for(l=0,j=0;l<set_Collection_points+2;l++,j++)
{
px[next-1][l]=pa[j];
}
for(l=set_Collection_points+2,j=0;l<set_Collection_points+set_Collection_points+4;l++,j++)
{
px[next-1][l]=pb[j];
}
for(l=set_Collection_points+set_Collection_points+4,j=0;l<set_Collection_points+set_Collection_points+set_Collection_points+6;l++,j++)
{
px[next-1][l]=pc[j];
}
myfree(0,pa);//释放内存
myfree(0,pb);//释放内存
myfree(0,pc);//释放内存
5.待采样一大次之后将外部SRAM**px中数据分一定次数传给内部SRAM的*py,写入SD卡。
res=f_open(file,file_name2,FA_CREATE_ALWAYS | FA_WRITE);
for(kp=0;kp<len5;kp++)
{
for(kq=0;kq<len4;kq++)
{
py[kq]=px[kp][kq];
}
res = f_write(file,py,len4,&bw1);
res = f_lseek(file,file->fsize);
}
f_close(file);
myfree(1,px);//释放内存
myfree(0,py);//释放内存
6.现在问题是一开始程序运行正常,待运行多次之后发生了采样的AD数据原来的末尾跑的守卫
例如:(我以5个AD数据为例)
正确的是:(前六位是数据格式始终没问题)
02 04 55 55 01 00 00 01 0F 00 02 78 04 23 12 06 34 65 FF 89 79
错误的是:
02 04 55 55 01 00 79 00 01 0F 00 02 78 04 23 12 06 34 65 FF 89
其实py数组本来可以不用,就怕影响pa,pb,pc,可惜还不行,程序运行不超过10次数据就错误了。
7.希望高手指点一二。
|
|