3181|3

65

帖子

0

TA的资源

一粒金砂(初级)

楼主
 

关于IAPoverIIC的例程 [复制链接]

void Write_Memory_Command(void)
{
    uint16_t WriteCounter= 0;
    uint16_t Number_Bytes_Transferred = 0;
    uint32_t Add_Flash,DATA_SIZE_IN_PAGE = 0;
    uint16_t Idx = 0;

    /* Wait until receiving Flash address to  write into + number of data to be written
      + the data to be written */
    while (Rx_Idx!= 0);
    /* Read the address  */
    Add_Flash = Read_Add();
    /* Read the number of bytes to be written  */
    Number_Bytes_Transferred = Read_Byte_Page_Number();
    if (Number_Bytes_Transferred <= PAGE_SIZE)
    {
        DATA_SIZE_IN_PAGE = 1;
    }
    else
    {
        if ((Number_Bytes_Transferred%PAGE_SIZE)==0)
        {
            DATA_SIZE_IN_PAGE= Number_Bytes_Transferred/PAGE_SIZE;
        }
        else
        {
            DATA_SIZE_IN_PAGE=(uint32_t) (Number_Bytes_Transferred/PAGE_SIZE)+1;
        }
    }
    for (Idx=4; Idx<(Number_Bytes_Transferred+8)/2; Idx++)
    {
        I2C1_Buffer_Rx[2*Idx+1]=I2C1_Buffer_Rx[2*Idx+1]<<8;
        I2C1_Buffer_Rx[2*Idx]=I2C1_Buffer_Rx[2*Idx]|I2C1_Buffer_Rx[2*Idx+1];
    }
#if defined USE_STM3210B_EVAL  || USE_STM32100B_EVAL
  Erase_Page(Add_Flash,DATA_SIZE_IN_PAGE);
#elif defined USE_STM3210E_EVAL ||  USE_STM3210C_EVAL
  if (((Add_Flash/(PAGE_SIZE/(PAGE_SIZE/Number_Bytes_Transferred)))&1)==0)
    {
        Erase_Page(Add_Flash,DATA_SIZE_IN_PAGE);
    }
#endif  

    for (WriteCounter = 0; (WriteCounter < (Number_Bytes_Transferred)/2 ); WriteCounter++)
    {
        FLASH_ProgramHalfWord((Add_Flash+2*WriteCounter), I2C1_Buffer_Rx[2*(WriteCounter+4)]);
    }
    opcode=0;
}


请问其中下面这句为什么Number_Bytes_Transferred要+8呢
for (Idx=4; Idx<(Number_Bytes_Transferred+8)/2; Idx++)
此帖出自stm32/stm8论坛

最新回复

                                   版主,还有我生成了bin文件,IAP的话是把整个bin文件写到flash里面去吗?  详情 回复 发表于 2011-1-13 17:28
点赞 关注
 

回复
举报

55

帖子

0

TA的资源

一粒金砂(初级)

沙发
 
你断章取义地不知道从哪里抄来一段程序,谁知道是什么意思?

提问题,请首先说明背景和出处。
此帖出自stm32/stm8论坛
 
 

回复

70

帖子

0

TA的资源

一粒金砂(初级)

板凳
 

不好意思版主,没说清楚,是官网上的AN3078(in-application programming over IIC)里面的command.c的,我不明白为什么在把收到的字节转成半字的时候,
for (Idx=4; Idx<(Number_Bytes_Transferred+8)/2; Idx++)
这个Number_Bytes_Transferred要+8
此帖出自stm32/stm8论坛
 
 

回复

66

帖子

0

TA的资源

一粒金砂(初级)

4
 

版主,还有我生成了bin文件,IAP的话是把整个bin文件写到flash里面去吗?
此帖出自stm32/stm8论坛
 
 
 

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

随便看看
查找数据手册?

EEWorld Datasheet 技术支持

相关文章 更多>>
关闭
站长推荐上一条 1/10 下一条
直播报名最后1周:艾迈斯欧司朗 OSP 开放协议,从氛围灯动态照明到传感器交互融合
直播时间:4月22日(周二)10:00
直播奖励:京东卡、蓝牙温湿度计、定制水杯

查看 »

 
EEWorld订阅号

 
EEWorld服务号

 
汽车开发圈

 
机器人开发圈

About Us 关于我们 客户服务 联系方式 器件索引 网站地图 最新更新 手机版

站点相关: 国产芯 安防电子 汽车电子 手机便携 工业控制 家用电子 医疗电子 测试测量 网络通信 物联网 7

北京市海淀区中关村大街18号B座15层1530室 电话:(010)82350740 邮编:100190

电子工程世界版权所有 京B2-20211791 京ICP备10001474号-1 电信业务审批[2006]字第258号函 京公网安备 11010802033920号 Copyright © 2005-2025 EEWORLD.com.cn, Inc. All rights reserved
快速回复 返回顶部 返回列表