打印
[技术问答]

这里的程序是不是有点问题?

[复制链接]
265|1
手机看帖
扫描二维码
随时随地手机跟帖
跳转到指定楼层
楼主
stormwind123|  楼主 | 2021-2-20 15:05 | 只看该作者 回帖奖励 |倒序浏览 |阅读模式
  if ( len == FLASH_PAGE_SIZE && ((addr & (FLASH_PAGE_SIZE-1)) == 0) )
    {
        DrvFMC_Erase(addr);

        while (len >= FLASH_PAGE_SIZE)
        {
            FMC_ProgramPage(addr, (uint32_t *) buffer);
            len    -= FLASH_PAGE_SIZE;
            buffer += FLASH_PAGE_SIZE;
            addr   += FLASH_PAGE_SIZE;      
        }
    }
--------------------
上面是BSP包里的一小段程序,if里面有( len == FLASH_PAGE_SIZE),说明请求的数据长度只要一个PAGE,不是多个PAGE,
所以只要运行一次           FMC_ProgramPage(addr, (uint32_t *) buffer);即可,没必要用到 while (len >= FLASH_PAGE_SIZE)。
我的理解对吗?

使用特权

评论回复
沙发
jasontu| | 2021-3-3 08:19 | 只看该作者
你的理解是对的。
没必要用到 while (len >= FLASH_PAGE_SIZE)。

使用特权

评论回复
发新帖 我要提问
您需要登录后才可以回帖 登录 | 注册

本版积分规则

410

主题

2097

帖子

2

粉丝