OpenEdv-开源电子网

 找回密码
 立即注册
正点原子全套STM32/Linux/FPGA开发资料,上千讲STM32视频教程免费下载...
查看: 4458|回复: 1

原子哥求助循环一到两次就停止循环请问是为什么啊

[复制链接]

4

主题

5

帖子

0

精华

新手上路

积分
48
金钱
48
注册时间
2013-7-9
在线时间
1 小时
发表于 2013-9-14 17:27:35 | 显示全部楼层 |阅读模式
  写了个接光谱仪数据的代码
   
if(command3[0]==0x57&&command3[1]==0xaa&&command3[2]==0x68&&command3[3]==0x02&&command3[4]==0x16&&command3[5]==0x16)
{    TIM3_Int_Init(4,7199);//10Khz的计数频率,计数到5为5ms  
      //  TIM3_Int_Init(499,7199);//10Khz的计数频率,计数到500为50ms  
       // waiting=0;
fpga_int();
        ziwaiint();  //紫外初始化
for(t=0;t<6;t++)                                         //向fpga发送命令
{
USART_SendData(USART1, fpga5[t]);                    //向串口1发送数据
while(USART_GetFlagStatus(USART1,USART_FLAG_TC)!=SET);//等待发送结束
}
USART_RX_STA=0;  
   while(command3[4]==0x16)       ///测试循环
    {                                            
ceshi();                                             //调用标定函数
calculate();                                      //计算函数            
for(t=0;t<6;t++)                                         //向fpga发送命令2 ,请求发送红外数据
{
USART_SendData(USART1, fpga6[t]);                    
while(USART_GetFlagStatus(USART1,USART_FLAG_TC)!=SET);//等待发送结束
}
USART_RX_STA=0;
do
 {
 
 }
    while((USART_RX_STA&0x8000)!=0);   //等待返回红外数据   
    GPIO_SetBits(GPIOA,GPIO_Pin_11);
         GPIO_ResetBits(GPIOA,GPIO_Pin_12);///让红外采背景值
     for(i=0;i<12;i++)
 {
  hongwai=USART_RX_BUF;
   }
 
//   leida_Receive_Data(leida_BUF,&lei);
//
//
//
// // leida_BUF[0]=0x31;
//
//  
// if(leida_BUF[0]==0x20)
// {
// v11[0]=0x00;
// v12[0]=(((leida_BUF[1]-(0x30))<<4)|(leida_BUF[2]-(0x30)));
// }
// else
// {
//
// v11[0]= ((leida_BUF[0]-(0x30))<<8);
// v12[0]=(((leida_BUF[1]-(0x30))<<4)|(leida_BUF[2]-(0x30)));
// }
//
// zhouqi=0;
// TIM4_Int_Init(49,7199);
////    zhouqi=0;
////  TIM4_Int_Init(4,7199);
// while(zhouqi!=184);
//
//   leida_Receive_Data(leida_BUF,&lei);
//
//
// if(leida_BUF[0]==0x20)
// {
// v21[0]=0x00;
// v22[0]=(((leida_BUF[1]-(0x30))<<4)|(leida_BUF[2]-(0x30)));
//
// }
// else
// {
//
//    v21[0]= ((leida_BUF[0]-(0x30))<<8);
// v22[0]=(((leida_BUF[1]-(0x30))<<4)|(leida_BUF[2]-(0x30)));
// }
      if(tcp_server_sta&(1<<7))                 
{
tcp_server_databuf[0]=0x57;
tcp_server_databuf[1]=0xaa;
   tcp_server_databuf[2]=0x68;
tcp_server_databuf[3]=0x0c; 
tcp_server_databuf[4]=0xb6;
tcp_server_databuf[5]=( NO&0x00ff);
   tcp_server_databuf[6]=((NO>>8)&0x00ff);//NO低八位在前高八位在后
tcp_server_databuf[7]=hongwai[5];
tcp_server_databuf[8]=hongwai[6];
tcp_server_databuf[9]=hongwai[7];
tcp_server_databuf[10]=hongwai[8];
tcp_server_databuf[11]=hongwai[9];
tcp_server_databuf[12]=hongwai[10];
tcp_server_databuf[13]=ziwairesult[3]&0x00ff;;
tcp_server_databuf[14]=(ziwairesult[3]>>8)&0X00FF;
tcp_server_databuf[15]=(carpasstime1&0x000000ff);
tcp_server_databuf[16]=((carpasstime1>>8)&0x000000ff);
                       tcp_server_databuf[17]=v11[0];
tcp_server_databuf[18]=v12[0];
tcp_server_databuf[19]=v21[0];
tcp_server_databuf[20]=v22[0];
// tcp_server_databuf[17]=((carpasstime1>>16)&0x000000ff);
// tcp_server_databuf[18]=((carpasstime1>>24)&0x00000ff)  ;//现发送前16位,最大时间为65秒
tcp_server_databuf[21]=(tcp_server_databuf[4]+tcp_server_databuf[5]+tcp_server_databuf[6]+tcp_server_databuf[7]+tcp_server_databuf[8]+tcp_server_databuf[9]+tcp_server_databuf[10]+tcp_server_databuf[11]+tcp_server_databuf[12]+tcp_server_databuf[13]+tcp_server_databuf[14]+tcp_server_databuf[15]+tcp_server_databuf[16]+tcp_server_databuf[17]+tcp_server_databuf[18]+tcp_server_databuf[19]+tcp_server_databuf[20]) ;
// tcp_server_databuf[22]=g;
tcp_server_sta|=1<<5;                
tcp_server_databuf[199]=22;
}
   delay_ms(200);
uip_polling();


if(tcp_server_tsta!=tcp_server_sta)//TCP Server状态改变 //时时监测命令
{  
  if(tcp_server_sta&(1<<6)) //收到新数据
{
command3[0]=tcp_server_databuf[0];
command3[1]=tcp_server_databuf[1];
command3[2]=tcp_server_databuf[2];
command3[3]=tcp_server_databuf[3];
command3[4]=tcp_server_databuf[4];
command3[5]=tcp_server_databuf[5];
command3[6]=tcp_server_databuf[6];
command3[7]=tcp_server_databuf[7];
tcp_server_sta&=~(1<<6); //标记数据已经被处理
}
tcp_server_tsta=tcp_server_sta;
 }
  for(i=0;i<6;i++)
  {
   command3=0;  ///一直测试
  }
  command3[4]=0x16;
    
 }
进了循环之后就循环两次 请问这是为什么呢
正点原子逻辑分析仪DL16劲爆上市
回复

使用道具 举报

26

主题

280

帖子

1

精华

高级会员

Rank: 4

积分
908
金钱
908
注册时间
2013-8-2
在线时间
279 小时
发表于 2013-9-14 17:42:15 | 显示全部楼层
我相信没有人会看你这段代码……太乱了!而且你没说清楚问题,是循环两次就退出还是循环两次就卡死……
博客:http://blog.csdn.net/feilusia
CC2541群(127442605);CC2640群(557278427);
Android群(541462902);STM8/STM32群(164311667);
Linux群(512598061);职场交流群(450154342);
回复 支持 反对

使用道具 举报

您需要登录后才可以回帖 登录 | 立即注册

本版积分规则



关闭

原子哥极力推荐上一条 /2 下一条

正点原子公众号

QQ|手机版|OpenEdv-开源电子网 ( 粤ICP备12000418号-1 )

GMT+8, 2025-7-13 03:54

Powered by OpenEdv-开源电子网

© 2001-2030 OpenEdv-开源电子网

快速回复 返回顶部 返回列表