莫名奇妙的错误请教各位,看看是什么问题

2020-02-02 09:30发布

本帖最后由 lixiangnew 于 2012-11-8 08:03 编辑

我在用nrf241u1p设计usb部分时,遇到莫名其妙的问题
1:我的硬件上面是nrf24lu1p外挂at45db041,由于引脚有限,串口和flash不能共同使用,我在删除串口程序文件的时候,usb系统就不识别了,添加串口文件后,不调用任何函数,usb就可以识别。而我在公司另外一台电脑上面也出现同样的问题,我又换到公司一个同事的笔记本上,让他帮我调试,结果他删除了串口文件,usb居然能识别。本来应该没有影响的,但是出现这个问题搞的一头雾水,没有搞明白是怎么回事,我这边删除串口就不识别usb,不删除就100%的能识别usb,串口文件现在还保留在程序里面。
2:在for循环里面我将收到的8个字节赋值给数组,结果赋值没有成功,读出来的数据不对,我一个一个赋值就可以

void main(){
//  uint16_t j,t;                                                                                       
  unsigned char databuf[32];
  flash_init();
  usb_init();        // Initialize USB
  EA=1;  // Enable global IRQ

  P00=0;
  databuf[0]=1;
  databuf[1]=2;
  databuf[2]=3;
  bufferwrite(1,1,databuf,2);
  delay_ms(10);
  buffertopage(1,1);
  databuf[0]=0;
  databuf[1]=0;
  databuf[2]=0;
  pagetobuffer(1,1);
  bufferread(1,1,databuf,2);

  if(databuf[0]==1){
          P00=1;
  }else{
          P00=0;

}
  if(databuf[1]==2){
          P01=1;
  }else{
          P01=0;
}

程序到这里运行完全正常,上电写flash正确,读出也正确,两个led都亮
  while(1){
          if(Ep1OutIsBusy==1){                        这里就有莫名奇妙的问题,这个是usb接收数据中断,接收到8个字节数据,我用led点亮测试,是正确的,但是在下面的赋值语句却不对
//                for(j=0;j<8;j++){
//                          pRecData[j]= map->out1buf[j];  这条语句感觉就是没有执行,读出来的数据不一致
//
//                }
                pRecData[0]= map->out1buf[0];   但是用这样赋值就可以,读出来数据一致
                if(pRecData[0]==1){
                          P00=1;
                  }else{
                          P00=0;
                  }

                  bufferwrite(1,1,pRecData,2);    写flash的buf也不行,读出来的值不是不对
                //  buffertopage(1,1);
                //  pagetobuffer(1,1);
                  bufferread(1,1,databuf,2);

                  if(databuf[0]==1){
                          P01=1;
                  }else{
                          P01=0;
                  }
                Ep1OutIsBusy=0;
          }
//          if(Ep1InIsBusy==0){
//                        SendReport();
//                  }
          }
}


flash的代码是同事给我的,我直接移植下添加到程序里面,就老出现错误,函数重命名什么的,但是明明没有重命名,后来我一个代码一个代码敲进去,居然好了,编译通过,各个功能都正常,我问同事是怎么回事,他说之前他也遇到过这样的问题,可能是编译器哪里兼容性问题,是在搞不懂,我想不应该有这样的问题的,是不是我哪里设置的问题,不知道坛子里有没有哪位大侠遇到相似的问题的,请指导下,先谢谢了。



0条回答

一周热门 更多>