野火电子论坛

 找回密码
 注册

QQ登录

只需一步,快速开始

查看: 14756|回复: 0

<STM32库开发指南>感觉有一个地方有错误,希望指导

[复制链接]
发表于 2014-10-31 18:06:15 | 显示全部楼层 |阅读模式
本帖最后由 fyh529920 于 2014-10-31 18:09 编辑

野火哥以及各位网友大家好,我今天看了野火哥写的STM32库开发指南的I2C接口那里,我发现有个地方有问题,不知道是不是我的理解有错误,希望大家指导。我先贴他的原程序。

Void I2C_EE_BufferWrite()
{
    void I2C_EE_BufferWrite(u8* pBuffer, u8 WriteADDr , u16 NumByteToWrite)

     u8 NumOfPage = 0,   NumOfSingle = 0 , ADDr = 0 , count = 0 ;

     ADDr= WriteADDr % I2C_PageSize ;
     count = I2C_PageSize - ADDr;
     NumOfPage = NumByteToWrite / I2C_PageSize ;
     NumOfSingle =  NumByteToWrite % I2C_PageSize ;

    if(ADDr == 0)
    {
        if(NumOfPage == 0)
        {
        I2C_EE_Pagewrite(pBuffer , WriteADDr , NumOfSingle);
        I2C_EE_WaitStandbyState();
        }
   
        else
        {
           while(NumOfPage--)
           {
               I2C_EE_Pagewrite(pBuffer , WriteADDr , I2C_PageOfSize);
               I2C_EE_WaitStandbyState();
               WriteADDr += I2C_PageSize;
               pBuffer += I2C_PageSize;
           }
        if(NumOfSingle != 0)
        {
            I2C_EE_Pagewrite(pBuffer , WriteADDr , NumOfSingle);
            I2C_EE_WaitStandbyState();
        }
        }
    }
    else
    {
         if(NumOfPage == 0)   //有问题的   就是这里
        {
        I2C_EE_Pagewrite(pBuffer , WriteADDr , NumOfSingle);
        I2C_EE_WaitStandbyState();
        }
        else
        {
          NumByteToWrite -= count ;
          NumOfPage = NumByteToWrite / I2C_PageSize ;
          NumOfSingle =  NumByteToWrite % I2C_PageSize ;
         .....//以下省略
        }
    }
}
我先说一下,我对这个函数中的几个声明的理解,
ADDr用于判断,是否从该页的最开始往下写。
count 如果不是从该页的最开始往下写,count 该页剩余的字节数。
NumOfPage 判断需要几页
NumOfSingle 判断需要几个字节
这是我的理解,  然后有问题的地方我在程序已经标注
此时的ADDr  不等于0, 那就说明,该写入地址,不是该页的首地址,
然后我可以这样想,一页不是有8个地址来着吗,分别标号0到7,那么吗,当我从第6个地址开始往下写时,
而我的要写入的数据大小为7个字节,那么不是就需要翻页了吗?   可是我标注的那段程序中并没有翻页,
我的理解就是这样,希望大家指点。
个人认为,应该加上一个 NumOfSingle 和 conut 的 比较,  然后根据比较的结果来判断需要翻页与否。





回复

使用道具 举报

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

本版积分规则

联系站长|手机版|野火电子官网|野火淘宝店铺|野火电子论坛 ( 粤ICP备14069197号 ) 大学生ARM嵌入式2群

GMT+8, 2024-11-24 20:14 , Processed in 0.035420 second(s), 24 queries , Gzip On.

Powered by Discuz! X3.4

Copyright © 2001-2021, Tencent Cloud.

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