请教关于Falsh写入函数中数据长度的问题

2019-08-17 10:42发布

本帖最后由 d1z1y2 于 2017-5-26 00:47 编辑

void STMFLASH_Write(u32 WriteAddr,u16 *pBuffer,u16 NumToWrite)

注释是这样的:
//从指定地址开始写入指定长度的数据
//WriteAddr:起始地址(此地址必须为2的倍数!!)
//pBuffer:数据指针
//NumToWrite:半字(16位)数(就是要写入的16位数据的个数.)


我的问题是:NumToWrite这个参数的大小,比如我写入一个数组 u8 a[2]={0,1};到Falsh,那么这个NumToWrite取多大啊,是2?  还是1?  按我的理解应该是1,因为写的是“半字数”,而不是“字节数”.但是按例程里面写法是2。


比如下面写法有什么区别,           


        #define FLASH_ADD_dat1_Test                0x0801FD20
        #define FLASH_ADD_dat2_Test                0x0801FD22
        
        u8 dat1[]={0x12,0x34};
        u8 dat2[]={0x56,0x78};
               
        STMFLASH_Write(FLASH_ADD_dat1_Test, (u16*)dat1, 1);        
        STMFLASH_Write(FLASH_ADD_dat2_Test, (u16*)dat2, 2);        




友情提示: 此问题已得到解决,问题已经关闭,关闭后问题禁止继续编辑,回答。