斑驳 发表于 2021-10-12 13:54:58

华大单片机HC32F460系列MCU内部FLASH制作成U盘三

if ((!buf) ||(blk_addr >= blk_max_num)
    || (!blk_len) || (blk_len > blk_max_num))
    {
       printf("[%s] param err\r\n", __FUNCTION__);
       return -1;
    }
    blk_left =blk_len;
    blk_offset= blk_addr % blk_mun_ppg;
    pg_num =blk_addr / blk_mun_ppg;

    if (blk_len% blk_mun_ppg)
       pg_sum = (blk_len / blk_mun_ppg) + 1;
    else
       pg_sum = (blk_len / blk_mun_ppg);

    /*(blk_mun_ppg - blk_offset):是一个page内还剩下多少个block可写 */
    if(blk_left > (blk_mun_ppg - blk_offset)) {
       data_sz = blk_mun_ppg - blk_offset;
    }
    else {
       data_sz = blk_left;
    }

    for (i = 0;i < pg_sum; i++)
    {
       if (inner_flash_Write(pg_num, blk_offset, data_sz * INNER_FLASH_BLOCK_SIZE,
            &buf[(blk_len - blk_left) *INNER_FLASH_BLOCK_SIZE] ))
       {
         printf("[%s] inner_flash_Write1err\r\n", __FUNCTION__);
         return res;
       }

       pg_num++;
       blk_offset = 0;
       blk_left = blk_left - data_sz;

       if (blk_left > blk_mun_ppg)
         data_sz = blk_mun_ppg;
       else
         data_sz = blk_left;
    }

    return res;
}
同样还需要实现GetCapacity和Read。实现后把板子插入电脑看效果, 格式化U盘,可以看到U盘容量大小,格式,分配单元大小;最后U盘存入文件。

页: [1]
查看完整版本: 华大单片机HC32F460系列MCU内部FLASH制作成U盘三