stm8 调试问题

2019-07-19 21:20发布

在调试的时候 发现有问题 高手指教一下  全速跑的时候 at=1  单步跑 at=0  设置断点调试时发现  当断点设置在1时 跑到 后面  at=1, 当断点设置在2 时  at=0


/*=========================================================================

========
long int ReadHtu21(char whatdo)
Function : 温度读取数据
INTPUT   : whatdo  0xf5湿度 0xf3温度
OUTPUT   : NONE
参数     : 温度or湿度
===========================================================================

======*/

u16 ReadHtu21(char whatdo)
{

       TMPHUM();
       I2C_START();
        if(I2C_TX(HTU21ADDR&0xfe)==ACK)  //写地址
        {
                  if(I2C_TX(whatdo)==ACK)  //转化命令               //1 断点
                {
                        if(whatdo==0xf3)                                 //2   断点
                        delay_ms(200);  //延时85ms化
                        else
                        delay_ms(50);  //延时30ms化  
                        delay_ms(50);  //延时30ms化  
                        I2C_START();   
                          at=I2C_TX(0x81);
                        if(at==NACK) return(0);//检测是否对读数响应
                        HandT[1] = I2C_RX(ACK);//读高八位
                        HandT[0] = I2C_RX(ACK);//读低八位
                        CRC_temp = I2C_RX(NACK);//CRC校验位
                        I2C2_Stop();
                        CRC_check(2,CRC_temp);//CRC校验函数
                        if(crc_flag==0) return(0);                          
                       
                        if (whatdo==((char)0xf5))
                        {
                          HandT[0] &= 0xf0;
                        temp = ((u32)HandT[1])*((u32)256)+(u32)HandT[0];
                                temp = temp*((u32)12500);
                                temp = temp/((u32)65536);
                               // temp = temp-((u32)400);
                                temp = temp-((u32)600);
                                shidu=temp;
                                 temp1=shidu ;

                                return shidu;
                        }
                        else
                        {       
                                HandT[0] &= 0xfc;
                                
                                temp = ((u32)HandT[1])*((u32)256)+(u32)HandT[0];
                                temp1=temp;
                                temp=((u32)17572)*temp;
                                temp=temp/((u32)65536);
                                temp1=temp;
                                wendu =(u16)(temp-((u32)5100));  /////////////人为的修正4685+320
                               // wendu =(u16)(temp-((u32)4685));  /////////////人为的修正4685+320
                                temp1=wendu;
                                return wendu;                //输出66.85
                        }
                }
        }
        return 0x5555;
}
voidmain(void)
{
    .......

   while(1)
   {
  ReadHtu21(0xF3);
     Delay_ms(1000);
   Delay_ms(1000);
  }

}

友情提示: 此问题已得到解决,问题已经关闭,关闭后问题禁止继续编辑,回答。