OpenEdv-开源电子网

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

stm8 调试问题

[复制链接]

153

主题

262

帖子

0

精华

高级会员

Rank: 4

积分
894
金钱
894
注册时间
2012-6-29
在线时间
37 小时
发表于 2016-5-15 11:42:00 | 显示全部楼层 |阅读模式
1金钱
在调试的时候 发现有问题 高手指教一下  全速跑的时候 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);
  }

}

正点原子逻辑分析仪DL16劲爆上市
回复

使用道具 举报

530

主题

11万

帖子

34

精华

管理员

Rank: 12Rank: 12Rank: 12

积分
165186
金钱
165186
注册时间
2010-12-1
在线时间
2106 小时
发表于 2016-5-18 22:01:51 | 显示全部楼层
回复

使用道具 举报

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

本版积分规则



关闭

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

正点原子公众号

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

GMT+8, 2024-9-29 04:20

Powered by OpenEdv-开源电子网

© 2001-2030 OpenEdv-开源电子网

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